DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jsuguo
今日帖子: 34
在线用户: 16
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/5/30 8:44:57
标题:
更改query组件的属性 浏览:3872
加入我的收藏
楼主: 我想用这样一段代码:
with query1 do
begin
  first;
  if not eof then
  begin
    if fieldbyname('sex').value = '1' then 
      fieldbyname('sex').value :    = '男'
    else fieldbyname('sex').value := '女';
    next;
  end;
end;
在显示时将sex字段的值由实际字符'0','1'改成‘男’或‘女’,可是出错信息说:query1:dataset not in edit or insert mode.我找了好半天书,也没找到如何修改这个状态的方法,还请指教。
谢谢。
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 hlc_alf ( ) ★☆☆☆☆ -
普通会员
2003/5/30 8:58:17
1楼: with query1 do
   begin
       requestlive:=true;
       modified:=true;
       if not fieldbyname('sex').value='1' then
            .........
   end;
----------------------------------------------
-
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/5/30 9:56:45
2楼: 不行呀,老兄,我照你写的试了试,出错信息说不能给只读属性赋值,这是只读属性吗?
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 hlc_alf ( ) ★☆☆☆☆ -
普通会员
2003/5/30 10:26:14
3楼: 错了,不好意思!应改为这样:
with query1 do
   begin
       requestlive:=true;
       if not fieldbyname('sex').value='1' then
            .........
   end;

----------------------------------------------
-
作者:
男 fidido (swGuitar) ★☆☆☆☆ -
盒子活跃会员
2003/6/1 10:13:10
4楼: 还是不对 我试过了 还有 就算前面加个edit
报错说 不能对一个只读的dateset进行操作按此在新窗口浏览图片
要怎么解决呀????????????????我也想知道
----------------------------------------------
我我,我是一只菜鸟,菜菜菜菜菜菜,菜菜菜菜菜菜菜菜菜菜菜菜~~~~~~~~~按此在新窗口浏览图片
作者:
男 fidido (swGuitar) ★☆☆☆☆ -
盒子活跃会员
2003/6/1 10:22:25
5楼: 想问一下 什么情况下dateset 会变成readonly呀 有没有属性可以设置的呀?????按此在新窗口浏览图片
----------------------------------------------
我我,我是一只菜鸟,菜菜菜菜菜菜,菜菜菜菜菜菜菜菜菜菜菜菜~~~~~~~~~按此在新窗口浏览图片
作者:
男 hlc_alf ( ) ★☆☆☆☆ -
普通会员
2003/6/2 9:21:26
6楼: 我用如下的语句进行插入操作时都不会报错,你再仔细看一下!
Query1.RequestLive:=true;
Query1.Close;
Query1.SQL.Clear;
Query1.Sql.Add(‘Insert  into  yhxx.db  values(:xm1,:gh1,)’);
Query1.Params[0].asstring:=Edit1.text;
Query1.Params[1].asinteger:=Strtoint(Edit2.text);
Query1.ExecSQL; 

----------------------------------------------
-
作者:
女 ahfann (ahfann) ★☆☆☆☆ -
普通会员
2003/6/2 11:14:34
8楼: 把query1的lock type 设置为批处理ltBatchOptimistic
试试看吧,不知道行不行!
然后是要加上edit 处理完了以后,还要加上pass
----------------------------------------------
我不会,所以我问,我会,所以想知道更多!
作者:
男 fidido (swGuitar) ★☆☆☆☆ -
盒子活跃会员
2003/6/2 14:11:39
9楼: unit Unit1;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ComCtrls, DB, DBTables, Grids, DBGrids;

type
    TForm1 = class(TForm)
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Query1: TQuery;
        ProgressBar1: TProgressBar;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

var
    Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
    with query1 do
    begin
        first;
        ProgressBar1.Max := RecordCount;
        ProgressBar1.Min := 0;
        RequestLive:=true;
        Edit;
        if not eof then
        begin
            if fieldbyname('Xb').AsInteger = 1 then
                fieldbyname('Xb').AsString := '男'
            else
                fieldbyname('Xb').AsString := '女';
            next;
            ProgressBar1.Position := ProgressBar1.Position + 1;
        end;
    end;
end;
end.
还是不行呀 问题出在哪了??
出错信息:Query1 Cannot modify a readonly dateset
----------------------------------------------
我我,我是一只菜鸟,菜菜菜菜菜菜,菜菜菜菜菜菜菜菜菜菜菜菜~~~~~~~~~按此在新窗口浏览图片
作者:
男 fidido (swGuitar) ★☆☆☆☆ -
盒子活跃会员
2003/6/2 14:17:16
10楼: lock type 只有adoquery有呀 query没有这个属性吧???
----------------------------------------------
我我,我是一只菜鸟,菜菜菜菜菜菜,菜菜菜菜菜菜菜菜菜菜菜菜~~~~~~~~~按此在新窗口浏览图片
作者:
女 ahfann (ahfann) ★☆☆☆☆ -
普通会员
2003/6/2 15:13:07
11楼: 没错,看错了!不好意思!
----------------------------------------------
我不会,所以我问,我会,所以想知道更多!
作者:
男 fidido (swGuitar) ★☆☆☆☆ -
盒子活跃会员
2003/6/3 9:55:39
12楼: 呃。。。。。到底错没错呀 那对的呢????按此在新窗口浏览图片
----------------------------------------------
我我,我是一只菜鸟,菜菜菜菜菜菜,菜菜菜菜菜菜菜菜菜菜菜菜~~~~~~~~~按此在新窗口浏览图片
作者:
女 ahfann (ahfann) ★☆☆☆☆ -
普通会员
2003/6/3 17:52:29
13楼: 你没错,是我看错了,query没错是没这个属性!
按此在新窗口浏览图片
----------------------------------------------
我不会,所以我问,我会,所以想知道更多!
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/6/7 8:56:06
14楼: 这个问题没人回答吗?求教斑竹和各位大侠.
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 jijiang (jijiang) ★☆☆☆☆ -
盒子活跃会员
2003/6/7 12:58:40
15楼: 你数据库的xb数据定义是什么?整形或字符?如是整形怎么可以插入字
如是字符型可以用下面:
procedure TForm1.Button1Click(Sender: TObject);
var 
Query:TQuery;
begin
    Query:=TQuery.create(nil);
    Query.databasename:=你的数据库名称
    Query.sql.clear;
    with query1 do
    begin
        first;
    
        if not eof then
        begin
            if fieldbyname('Xb').AsInteger = 1 then
                begin
                 Query.sql.clear;
                 Query.sql.add('update 表名 set xb='男' where 'xb'='1');
                 Query.execsql;
                end;
            else
               begin
                 Query.sql.clear;
                 Query.sql.add('update 表名 set xb='男' where 'xb'='1');
                 Query.execsql;
               end;
            next;
            
        end;
    end;
end;

----------------------------------------------
-
作者:
男 fidido (swGuitar) ★☆☆☆☆ -
盒子活跃会员
2003/6/8 17:31:27
16楼: 晕 楼上的跑题了。。。。。。按此在新窗口浏览图片
----------------------------------------------
我我,我是一只菜鸟,菜菜菜菜菜菜,菜菜菜菜菜菜菜菜菜菜菜菜~~~~~~~~~按此在新窗口浏览图片
作者:
男 fidido (swGuitar) ★☆☆☆☆ -
盒子活跃会员
2003/6/8 17:34:31
17楼: Xb当然是字符型的 我只是作个试验 想可以不用sql 语句而直接用
fieldbyname('Xb').AsString := 'XXX'来改变数据库中的值
理论上应该能行吧 为什么老出来Query1 Cannot modify a readonly dateset
又或者是query1 is readonly的错 按此在新窗口浏览图片 按此在新窗口浏览图片
----------------------------------------------
我我,我是一只菜鸟,菜菜菜菜菜菜,菜菜菜菜菜菜菜菜菜菜菜菜~~~~~~~~~按此在新窗口浏览图片
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/6/9 7:47:16
18楼: 我也是和楼上这位老兄一样,不过不是想改数据库中的值,只是想在显示时,将显示为0或1的值显示为‘男’或‘女’,呵呵,这要求不高吧,可总是出楼上说的那种错误。请高人指点。
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/6/9 8:47:22
20楼: 谢谢贝贝11老兄,能不能说得详细点。
----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 fidido (swGuitar) ★☆☆☆☆ -
盒子活跃会员
2003/6/9 9:52:33
21楼: 18楼的问题好办 只要在你的dataset的Tfield中的Gettext事件里面写一点代码
然后显示的时候用displaytext属性就可以了
我的问题谁来解决呀~~~~~按此在新窗口浏览图片
----------------------------------------------
我我,我是一只菜鸟,菜菜菜菜菜菜,菜菜菜菜菜菜菜菜菜菜菜菜~~~~~~~~~按此在新窗口浏览图片
作者:
男 xiangsong (天下第一菜) ★☆☆☆☆ -
盒子活跃会员
2003/6/9 11:26:44
22楼: to 贝贝11:我试了用计算列,这样是可行的,不过我总觉得有些不理想,难道就不能用fieldbyname('sex').asstring := '男',这样的语句吗?大家以前没有人这样改过吗?这应该是非常常见的问题呀。请各位大虾相助。

to fidido 呵呵,我不太明白你说的办法,看来你还是菜不过我,tfield是不可视的呀,怎么去找他的事件列表?在程序里直接写吗?你能不能再说得详细一点,究竟这段代码该如何写,谢谢你。

----------------------------------------------
天下第一菜

那一天我在街头踯躅
你在秋天里独自跳舞
回首落满悲欢的来时路
那覆水难收的赌注
我们用青春一起作证
我们曾遇见到幸福
作者:
男 noshcs (noshcs) ★☆☆☆☆ -
盒子活跃会员
2003/6/9 13:54:15
23楼: join出来的表 和使用了order by 的表都是只读的 不能修改。
----------------------------------------------
-
作者:
男 sunyboylqy (sunyboylqy) ★☆☆☆☆ -
盒子活跃会员
2003/6/9 14:48:27
24楼: 如果只是要显示,这好办。
在你查询的query上右键,选"add all fields"然后选中“sex”字段。用OnGetText事件。
if query1.RecordCount > 0 then
 begin
    if sender.AsString ='1' then
      text:='男
    else
     text:='女';
 end;
显示出来的就OK了。
至于改数据库中的值,如果用DbGrid显示的话,也是可以更改的,这就不说了。
----------------------------------------------
我的联系方式:QQ:371727146MSN:boylqy23@hotmail.com
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行93.75毫秒 RSS