如何获取动态查询出的cxGrid中的Footer合计值?

Ascn 2008-01-17 11:47:07
cxGrid是摆在窗体上的,但其中的内容是动态查询出来的。即:ADOQuery中的SQL语句是动态赋值的,不一定查询某个固定表,可能是多表查询,也可能是另一个表的内容。
在代码中,以如下代码的方式生成列及其Footer合计:

ds_invd.Close;
ds_invd.SQL.Text := 'Select s0, s1, n0, n1 from TjTemp';
ds_invd.Open;
ds_invd.First;

gtvd.BeginUpdate;
gtvd.ClearItems;

col := gtvd.CreateColumn;
col.Caption := '客户名称';
col.DataBinding.FieldName := 's1';
col.Width := 200;
si := gtvd.DataController.Summary.FooterSummaryItems.Add;
si.ItemLink := col;
si.Kind := skCount;
si.Position := spFooter;
si.Format := '小计:#0 个';

col := gtvd.CreateColumn;
col.Caption := '发票份数';
col.DataBinding.FieldName := 'n0';
col.Width := 60;
si := gtvd.DataController.Summary.FooterSummaryItems.Add;
si.ItemLink := col;
si.Kind := skSum;
si.Position := spFooter;
si.Format := '#0';
...


在统计后,在其他控件(按钮)代码中想获取“发票份数”列对应Footer中的合计值,第一次成功。如果此时再点击“统计”即再执行一次上述代码后,在cxGrid中显示了正确的合计值,但在按钮代码中取出的值是0。
如果在执行一次(取得正确值)后,更改SQL语句,然后再次生成列,统计后显示的值也是正确的,但按钮中仍然无法获取正确的值,始终为0.

请各位帮帮忙,谢谢
...全文
599 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ascn 2008-01-17
  • 打赏
  • 举报
回复
自己解决,结贴。竟然这么简单:

在ClearItems前加一句:
gtv.DataController.Summary.FooterSummaryItems.Clear;
就OK了。

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧