Delphi ClientDataset聚合不同
我有一个Delphi ClientDataset聚合不同,delphi,delphi-xe,Delphi,Delphi Xe,我有一个ClientDataSet,其中一个聚合字段计算另一个字段的平均值。我还有一个关于“组”字段的索引。运行聚合后的结果如下所示-到目前为止效果良好: 我希望实现的是将聚合减少到每组一行,如下所示: 我尝试过过滤,但显然这不起作用。我还尝试将光标克隆到一个新的数据集,该数据集在组上具有唯一索引,但也没有成功。新的ClientDataSet上的索引似乎被忽略了,尽管我克隆了光标,重置了第一个ClientDataSet的索引字段: ClientDataSet2.CloneCursor(Clie
ClientDataSet
,其中一个聚合字段计算另一个字段的平均值。我还有一个关于“组”字段的索引。运行聚合后的结果如下所示-到目前为止效果良好:
我希望实现的是将聚合减少到每组一行,如下所示:
我尝试过过滤,但显然这不起作用。我还尝试将光标克隆到一个新的数据集,该数据集在组上具有唯一索引,但也没有成功。新的ClientDataSet
上的索引似乎被忽略了,尽管我克隆了光标,重置了第一个ClientDataSet
的索引字段:
ClientDataSet2.CloneCursor(ClientDataset1,True,False)代码>
因此,对于如何实现这一目标的任何好主意,我们都非常赞赏
编辑:刚刚意识到,平均值在第二个屏幕截图中发生了变化。当然,我希望保留第一个屏幕截图中的原始值。当每组只显示一行时,您希望在val列中看到什么?@uwerabe,val列并不重要。不管我看到的是第一个中间条目还是最后一个条目。重要的是我有一组和一个平均值。最后,如果有助于理解我的问题,我想在图表中显示这些值。@uwerabe就像从选择组中得到的一样,将得到CDS分组中的平均值(val)。我认为用一个简单的解决方案是不可能的。只是想一想:我认为每次更改值时都需要填充一个新的数据集,以反映Avg/Group
。您的新数据集将由Group和AvgVal组成。因此,迭代原始CD并在ClientDataSet1.GetGroupState(1)
中首先检查gbFirst,如果为真,则添加新记录。另一种方法是如下“分组”您的显示:以下是参考: