我正在使用连接到 DBGrid 的 TClientDataset 和几个聚合字段,用于计算其他几个浮点字段的总和。所有字段均已在设计时创建。
一切都按预期工作,直到 ClientDataset 的 IndexName 使用自定义索引更改,以便对网格进行排序。之后,聚合字段无法正确计算其值,并且它们被设置为 Null 值。
Delphi XE7 中出现该问题。
我用谷歌搜索了一下,找到了一个适合我的解决方案
有一个错误在TCustomClientDataSet.SetIndex中声明的方法DBClient单元。
解决方案建议替换如下代码
if FAggregatesActive then
begin
FAggFieldsInit := False;
ResetAllAggs(FAggregatesActive);
与下一个
if FAggregatesActive then
begin
CloseAggs;
ResetAllAggs(FAggregatesActive);
据我了解,更换FAggFieldsInit := 假 with 关闭聚合,强制释放聚合,然后使用新索引重新计算。
正如我所说,这个解决方案对我有用,而且我没有注意到任何不需要的行为。
原始解决方案归功于 AndreyZ。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)