2012-05-08 36 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でのみサポートされています。 –

関連する問題