偶用了两种方法..
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;
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
请问是为啥?
那我该怎么做才能得到我想要的结果呢?
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;
如果你现在已经有一条记录是:
id xzdf tcdf
001 null null你想为xzdf,tcdf上数据,那只有更新了,带个查询是为了能把查询的结果
赋给你想UPDATE的字段!
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'
先简单的执行一个SQL试试ADOQuery1.SQL.Add('update stdf set xzdf=10 where id=''001''');
用这句是可以完成操作的...但是换做前面的就不行...为啥?
如果不支持该怎么办啊.
XZZF:='SELECT SUM(DF) FROM XZDF'
这个只能让这个XZZF是一个语句,咋让它得到由数据表里计算得出具体的值?
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;
Parameters.ParamByName('xzdf').AsFloat := sum;
Parameters.ParamByName('id').AsString := '001';