select 号码, 重量, 价格 from yourtable union select '总计',sum(重量),sum(价格) from yourtable
zl:=0; jg:=0; with query1 do begin first; for i:=1 to recordcount do begin j:=1; a[j]:=fieldvalues['重量']; b[j]:=fieldvalues['价格']; next; j:=j+1;k:=k+1; end; for i:=1 to j do begin zl:=a[i]+zl;jg:=b[i]+jg; end;close; sql.clear; sql.add('insert into ??(重量,价格) values(zl,jg) '); end;
SELECT 号码,SUM(重量), SUM(价格) FROM table GROUP BY 号码 WITH ROLLUP总计以NULL来代替的!可以在前台用静态字段的OnGetText事件里处理一下就行了! 不知这样你是否满意!
到http://www.51delphi.com/下载吧,那儿有Ehlib 2.5即DBEDITEH, 其实应该如此写即可: select 号码, 重量, 价格 from yourtable union select '总计' as 号码,sum(重量) as 重量 ,sum(价格) as 价格 from yourtable 你就可以通过fieldbyname('重量').value 访问 sum(重量) 了
from yourtable
union
select '总计',sum(重量),sum(价格)
from yourtable
jg:=0;
with query1 do
begin
first;
for i:=1 to recordcount do
begin
j:=1;
a[j]:=fieldvalues['重量']; b[j]:=fieldvalues['价格'];
next;
j:=j+1;k:=k+1;
end;
for i:=1 to j do
begin
zl:=a[i]+zl;jg:=b[i]+jg;
end;close;
sql.clear;
sql.add('insert into ??(重量,价格) values(zl,jg) ');
end;
FROM table
GROUP BY 号码 WITH ROLLUP总计以NULL来代替的!可以在前台用静态字段的OnGetText事件里处理一下就行了!
不知这样你是否满意!
DBEDITEH在那儿?D6中有这个控件吗?
TO: waller(七嘴八舌)
敢问在D中怎么样把SUM(重量)赋给一个变量????
Weight = 重量,
Price = 价格
from yourtable
union
select Code = '总计',
Weight = sum(重量),
Price = sum(价格)
from yourtable这样你取总计时,只要 if DataSet.FieldByName('Code').AsString = '总计' then
begin
TotalWeight := DataSetFieldByName('Weight').AsInteger;
TotalPrice := DataSetFieldByName('Price').AsInteger;
end;
TotalWeight := DataSet.FieldByName('Weight').AsInteger;
TotalPrice := DataSet.FieldByName('Price').AsInteger
其实应该如此写即可:
select 号码, 重量, 价格
from yourtable
union
select '总计' as 号码,sum(重量) as 重量 ,sum(价格) as 价格
from yourtable
你就可以通过fieldbyname('重量').value 访问 sum(重量) 了
DBGridEh是一个第三方控件,也能实现。不过我猜你没有装。
总之解决的方法很多很多。