【发布时间】:2012-05-09 04:13:46
【问题描述】:
我有一个如下所示的表格:
TYPE GROUP VALUE
----- ----- -----
0 0 10
0 0 60
0 1 20
1 0 30
1 1 40
1 1 10
我想要按 TYPE 和 TYPE;GROUP 的总计。 在 TYPE 和 TYPE;GROUP 上创建索引。
object ClientDataSet1: TClientDataSet
IndexDefs = <
item
Name = 'ClientDataSet1Index1'
Fields = 'TYPE'
GroupingLevel = 1
end
item
Name = 'ClientDataSet1Index2'
Fields = 'TYPE;GROUP'
GroupingLevel = 2
end>
IndexName = 'ClientDataSet1Index1'
并创建了两个聚合
object ClientDataSet1: TClientDataSet
Aggregates = <
item
Active = True
AggregateName = 'Agg1'
Expression = 'SUM(VALUE)'
GroupingLevel = 1
IndexName = 'ClientDataSet1Index1'
end
item
Active = True
AggregateName = 'Agg2'
Expression = 'SUM(VALUE)'
GroupingLevel = 2
IndexName = 'ClientDataSet1Index2'
end>
AggregatesActive = True
Agg2 不会计算,因为 ClientDataset 索引设置为 ClientDataSet1Index1。 如果 ClientDataset.IndexName = ClientDataSet1Index2, Agg2 有效,但 Agg1 无效:( 它似乎不允许多个分组级别,因为我只能 一次指定一个客户端数据集索引。
我错过了什么吗?
解决方法是克隆我的 clientdataset 并创建另一个 聚合在那里。有点不便。
[使用 D2006]
谢谢
【问题讨论】:
-
供将来参考:似乎任何聚合字段都必须使用 Tclientdataset 中的相同索引。
-
这是 TClientDataset 中的一个错误,至少从 Delphi XE 到 Delphi XE7 都存在,如 stackoverflow.com/a/48888173/460775
标签: delphi