我正在使用连接到DBGrid的TClientDataset和几个Aggregate Fields来计算其他几个Float Fields的SUM。所有字段均已在设计时创建。
所有内容都按预期工作,直到ClientDataset的IndexName随自定义索引更改为止,以便对网格进行排序。之后,聚合字段不会正确计算它们的值,并且它们设置为Null值。
Delphi XE7中出现问题。
答案 0 :(得分:2)
我有谷歌关于它,我找到了一个适合我的解决方案here
在 DBClient 单元中声明的 TCustomClientDataSet.SetIndex 方法存在错误。 该解决方案建议替换以下代码
if FAggregatesActive then
begin
CloseAggs;
ResetAllAggs(FAggregatesActive);
下一个
{{1}}
据我所知,用 CloseAggs 替换 FAggFieldsInit:= False ,强制释放聚合,然后用新索引重新计算。 正如我所说这个解决方案对我有用,我没有发现任何不需要的行为。
归功于AndreyZ的原始解决方案。