Delphi 的DBGridEH 中,几个列栏位值相加
2个回答
展开全部
要么sql语句里 加一个left join
要么DBGridEH 的OnDrawDataCell 判断一下
如果该列是12月 就累加前11月 总金额显示在总金额里
要么DBGridEH 的OnDrawDataCell 判断一下
如果该列是12月 就累加前11月 总金额显示在总金额里
追问
ONDRAWDATACELL,怎么判断,,求代码
追答
OnDrawDataCell已经失效 换用OnDrawColumnCell吧
假如 你的 1月 2月 。。。。。
对应的字段是 Y1 Y2 。。。。
也就是说 sql语句是 select Z ,Y1,Y2,Y2....... ,Y12 from table ...
Z是总金额字段
用 adoquery打开
执行
K1:=0; //类全局变量
adoquery.close;
adoquery.sql.text:=sql;
adoquery.open;
假如你希望 当12月的OnDrawColumnCell发生时 统计数据
那样的话 你可以在 OnDrawColumnCell里写
if K1< adoquery.RecNo then
begin
K1:= adoquery.RecNo;
if Column.Field.FieldName='Y12' then
begin
adoquery.edit;
adoquery.fieldByname('Z').value:= adoquery.fieldByname('Y1').asFloat+adoquery.fieldByname('Y2').asFloat...........adoquery.fieldByname('Y12').asFloat;
adoquery.post;
end;
end;
以上只是笨办法 K1的存在只是为了确保每行只统计一次 否则程序要死循环
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询