ClientDataset 的索引更改时未计算 TAggregateField

TAggregateField not calculated when Index of ClientDataset changes

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

一切都按预期工作,直到 ClientDataset 的 IndexName 更改为自定义索引,以便对 Grid 进行排序。在那之后,聚合字段没有正确计算它们的值,并且它们被设置为空值。

问题出现在Delphi XE7.

我有 google 的经验,我找到了适合我的解决方案 here

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

if FAggregatesActive then
begin
    FAggFieldsInit := False;
    ResetAllAggs(FAggregatesActive);

与下一个

if FAggregatesActive then
begin
    CloseAggs;
    ResetAllAggs(FAggregatesActive);

据我了解,将 FAggFieldsInit := False 替换为 CloseAggs,强制释放聚合,然后重新计算与新指数。 正如我所说,此解决方案对我有用,而且我没有注意到任何不良行为。

原始解决方案归功于 AndreyZ。