数据表更新问题 怎么都没人会啊! 高手都去那里了啊,是不是还没上班啊! ( 积分: 74 )

  • 主题发起人 主题发起人 hgto2008
  • 开始时间 开始时间
update 表3 set 合计金额=b.合计金额
from
(
select 流水号,sum(金额) as 合计金额 from
(select 流水号,金额 from 表1
union all
select 流水号,金额 from 表2 ) as a
group by 流水号
) as b
where 表3.流水号=b.流水号
 
dez_0609:
你这应该不行吧

如果在paradox里能这样:
select 流水号,sum(金额) as 合计金额 from
(select 流水号,金额 from 表1
union all
select 流水号,金额 from 表2 ) as a
group by 流水号

那问题早就结了。
 
如WoDing,jianguobu所说,Paradox很多时候是力不能及的,楼主还是换别的数据库吧
 
这库是别人做好了的啊,我只是在他的基础上做。没办法啊
还是帮帮想想办法呀。
不用SQL能写出来也行啊。
表3的数据库是固定的最多也就100来行吧。
where 后面的表达不知怎么写。想同流水号的数据相加。
 
这样的话,就只能在前台想办法了。用delphi循环来写。
 
用delphi循环怎么写?帮忙写一下好吗 to jianguobu
能把一张表如表1的合计写入表3也可以啊
 
While not Query表3.eof do
begin
Lsh:=Query表3.fieldbyname('流水号').asString;
Query表2.close;
Query表2.sql.clear;
Query表2.sql.add('select sum(金额) as hj from 表2 where 流水号='+Lsh);
Query表2.open;
hj2:=Query表2.fieldbyname('hj').AsFloat;
Query表1.close;
Query表1.sql.clear;
.............
hj1:=Query表1.fieldbyname('hj').AsFloat;
Query表3.fieldbyname('合计金额').AsFloat:=hj1+hj2;
Query表3.next;
end;
只是思路,语法对错以Delphi为准
 
问题是我一点都不会写啊,我是照抄的呀。
能不能帮我写祥细一点啊
 
全部照抄?一點都不會?那你做什麼?浪費時間呀?
先找本基礎的書看看先。
 
这个急着要用啊,
一边做一边学。
 
var
lsh,hj2,hj1 : string;
begin
While not table1.eof do
begin
lsh:=table1.fieldbyname('流水号').asString;
query2.close;
query2.sql.clear;
query2.SQL.add ( 'select sum(金额) as 金额 from cudan2.db where 流水号'='+#39+ lsh +#39);
query2.open;
hj2:=floattostr(query2.fieldbyName('金额').asfloat);

query1.close;
query1.sql.clear;
query1 .sql.add('select sum(金额) as 金额 from cudan1.db where 流水号'='+#39+ lsh +#39);
query1.open;
hj1:=floattostr(query1.fieldbyName('金额').asfloat);

query3.close;
query3.sql.clear;
query3.SQL.Add('update system.db set 合计金额=('+#39+ hj1+#39')+('+#39+ hj2+#39') where 流水号'='+#39+ lsh +#39);
query3.ExecSQL ;

table1.next;

end;
table1.Close ;
end;
这样可以用了,但有点慢。不知道有没有更好的方法?
 
多人接受答案了。
 
后退
顶部