Delphi 的DBGridEH 中,几个列栏位值相加

如图所示:我希望列总金额里面自动显示:1月+2月+3月+4月......的值怎么做??... 如图所示: 我希望 列 总金额里面 自动显示: 1月+2月+3月+4月......的值 怎么做?? 展开
 我来答
sirouszlh
2014-02-19 · TA获得超过1651个赞
知道小有建树答主
回答量:1038
采纳率:100%
帮助的人:638万
展开全部
要么sql语句里 加一个left join
要么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的存在只是为了确保每行只统计一次 否则程序要死循环
曾经黄过
2014-02-19 · TA获得超过109个赞
知道小有建树答主
回答量:185
采纳率:80%
帮助的人:83.7万
展开全部
用sql server写好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式