我用 updata set ,它说我不能返回多个数据
我用 grid.field['aaa']:='0' 用dataset,他说不能改,没打开。
我看到网上有关数据携带的操作,不回这么麻烦吧。
我刚刚接触d,大家帮忙。

解决方案 »

  1.   

    代码帖出来看看
    用UPDATE更新的时候是不是用open而不是用EXECSQL?
      

  2.   

    很简单,你在adoquery的字段中添加一个计算字段 a, type=integer,
    在adoquery的onCalcFields()事件中写入:
     a.value:=0;
      

  3.   

    用update set 时
    把ADOQuery.Active:=True;或ADOQuery.open;
    改为ADoQuery.ExecSql即可
      

  4.   

    哇,好快啊
    代码在屋里,我还在上班,郁闷在gdb中,估计 lzy6204(想闭门修炼) 和 lcxhjg() 说的对,嘿嘿。 zhangheaaa(竹你理解错我的意思了。等下班了我回去试试。
      

  5.   

    对了,execsql和open有什么区别??
      

  6.   

    execsql和open有什么区别??
    open是打来数据集,你得到数据
    execsql是执行某项操作,比如修改,删除、添加,完成后你什么都得不到,如果原来有数据集,除了添加和删除的纪录,其他根本不变
      

  7.   

    你是要改变数据库一列的值,还是Grid一列的值?
      

  8.   

    with DataModule1.ADOQuery1 do begin
      SQL.Clear;
      SQL.Add('Update yourTable ');              //SQL文
      SQL.Add(' Set field1=''0'' ');
      ExecSQL;                                   //執行
    end;
      

  9.   

    有返回值要用OPEN,否则用EXECSQL。我做的系统:
    http://www.epidn.com/
      

  10.   

    execsql和open有什么区别??
    execsql执行没有返回记录的sql语句,使用时,active:=false,不然,出错.
    open执行有返回记录的sql语句,使用时,置active:=true.
      

  11.   

    query1.first;
    for i:=0 to query1.recordcount-1 do
      begin
        query1.edit;
        query1.fieldbyname('aa').asstring:='0';
        query1.post;
        query1.next;
      end;或用缓存更新。