2012-05-08 71 views
6

是否可以在计算字段上添加汇总字段?在TClientDataset中汇总计算字段

假设存在具有以下字段的CDS:

  • ID(自动增量)
  • 名称(字符串)
  • 价格(浮点)
  • 数量(整数)
  • 合计(整数) - 计算字段 - 价格*数量

我想添加聚合得到Total列的总和。可能吗?

回答

5

是的,如果您将计算的字段更改为InternalCalc字段,则可以。计算仍然在OnCalcFields事件中完成,但是在对该字段进行计算时必须检查InternalCalc的状态。

+0

['aggregate fields'](http://edn.embarcadero.com/article/29272)?他们似乎更适合这个目的。 – TLama

+3

@TLama,当然你可以用SUM(Price * Quantity)做一个聚合字段,但问题是如何在一个计算字段上进行聚合。这只有在计算字段具有FieldKind = fkInternalCalc时才有效。 –

+3

它主要是评估的顺序:InternalCalc字段在聚合和排序之前进行计算,因此它们可以在聚合中用作索引。计算的字段在此之后进行评估。 InternalCalc字段仅在TClientDataSets中受支持。 –