【问题标题】:TAggregateField not calculated when Index of ClientDataset changesClientDataset 的索引更改时未计算 TAggregateField
【发布时间】:2018-02-20 15:03:05
【问题描述】:

我正在使用一个 TClientDataset,它连接到一个带有几个聚合字段的 DBGrid,用于计算另外几个浮点字段的总和。所有字段均已在设计时创建。

一切都按预期工作,直到 ClientDataset 的 IndexName 随自定义索引发生更改,以便对 Grid 进行排序。之后,Aggregate Fields 没有正确计算它们的值,它们被设置为 Null 值。

问题出现在Delphi XE7中。

【问题讨论】:

    标签: delphi indexing aggregate tclientdataset


    【解决方案1】:

    我在谷歌上找到了一个适合我的解决方案here

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

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

    与下一个

    if FAggregatesActive then
    begin
        CloseAggs;
        ResetAllAggs(FAggregatesActive);
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-03
      • 2016-11-11
      • 1970-01-01
      • 2020-09-13
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      相关资源
      最近更新 更多