当ClientDataset的索引发生更改时,不会计算TAggregateField

时间:2018-02-20 15:03:06

标签: delphi indexing aggregate tclientdataset

我正在使用连接到DBGrid的TClientDataset和几个Aggregate Fields来计算其他几个Float Fields的SUM。所有字段均已在设计时创建。

所有内容都按预期工作,直到ClientDataset的IndexName随自定义索引更改为止,以便对网格进行排序。之后,聚合字段不会正确计算它们的值,并且它们设置为Null值。

Delphi XE7中出现问题。

1 个答案:

答案 0 :(得分:2)

我有谷歌关于它,我找到了一个适合我的解决方案here

DBClient 单元中声明的 TCustomClientDataSet.SetIndex 方法存在错误。 该解决方案建议替换以下代码

if FAggregatesActive then
begin
    CloseAggs;
    ResetAllAggs(FAggregatesActive);

下一个

{{1}}

据我所知,用 CloseAggs 替换 FAggFieldsInit:= False ,强制释放聚合,然后用新索引重新计算。 正如我所说这个解决方案对我有用,我没有发现任何不需要的行为。

归功于AndreyZ的原始解决方案。