偶用了两种方法..
1  ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
adotable3.Edit;
adotable3.insert;
adotable3.fieldbyname('xh').Value:=bsSkinEdit3.Text;
adotable3.fieldbyname('xzdf').Value:=ADOQuery1.SQL.Add(select sum(df) from tkxzt);
adotable3.fieldbyname('tcdf').Value:=ADOQuery2.SQL.Add('select sum(df) from tktct');
ADOQuery1.execsql;
ADOQuery2.ExecSQL;
adotable3.Post;
这种执行以后表里没任何反应.
2.ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into stdf(xzdf) select sum(tkxzt.df) as xzdf from tkxzt,stdf');
ADOQuery1.ExecSQL;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('insert into stdf(tcdf) select sum(tktct.df) as tcdf from tktct');
ADOQuery2.ExecSQL;
这种执行以后有反应,但是错位
比如我想要的结果 id xzdf tcdf
                 001 10   8
现在的结果却是   id  xzdf  tcdf
                 001  0     0
                  0   10    0
                  0    0    8
请问是为啥?
那我该怎么做才能得到我想要的结果呢?

解决方案 »

  1.   

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('update stdf set xzdf=(select sum(tkxzt.df) from tkxzt,stdf) where id=''001''');
    ADOQuery1.ExecSQL;
    ADOQuery2.Close;
    ADOQuery2.SQL.Clear;
    ADOQuery2.SQL.Add('update stdf set tcdf=(select sum(tktct.df)from tktct) where id=''001''');
    ADOQuery2.ExecSQL;
      

  2.   

    insert是新增一条记录啊,
    如果你现在已经有一条记录是:
    id xzdf tcdf
    001 null  null你想为xzdf,tcdf上数据,那只有更新了,带个查询是为了能把查询的结果
    赋给你想UPDATE的字段!
      

  3.   

    //这里有笔误,不用stdf
    ADOQuery1.SQL.Add('update stdf set xzdf=(select sum(tkxzt.df) from tkxzt) where id=''001''');其实最终要执行的是:update stdf set xzdf=(select sum(df) from tkxzt) where id='001'
      

  4.   

    什么数据库啊?
    先简单的执行一个SQL试试ADOQuery1.SQL.Add('update stdf set xzdf=10 where id=''001''');
      

  5.   

    ADOQuery1.SQL.Add('update stdf set xzdf=10 where id=''001''');
    用这句是可以完成操作的...但是换做前面的就不行...为啥?
      

  6.   

    我用的ACCESS,这个支持不..?
    如果不支持该怎么办啊.
      

  7.   

    我设了个中间变量
    XZZF:='SELECT SUM(DF) FROM XZDF'
    这个只能让这个XZZF是一个语句,咋让它得到由数据表里计算得出具体的值?
      

  8.   

    你最这样吧,做一个查询,把取得的值拿出来,然后去update;
    var
      sum: Double;with ADOQuery1 do
    begin
      close;
      sql.clear;
      sql.add('select sum(df) from xzdf');
      open;
      if not IsEmpty then sum := Fields[0].asfloat;
      close;
      sql.clear;
      sql.add('update stdf set xzdf=:xzdf where id=:id');
      ParamByName('xzdf').AsFloat := sum;
      ParamByName('id').AsString := '001';
      ExecSQl;
    end;
      

  9.   


    Parameters.ParamByName('xzdf').AsFloat := sum;
    Parameters.ParamByName('id').AsString := '001';