を使用して、次のように私は、マスター/ディテールClientDataSetのを持っている(これらは作成されている/実行時に読み込まとデータが移入API呼び出し、無データベース接続から返された):DELPHI:マスター・ディテールClientDataSetのとCalcFields
Services:
ID
Name
BasePrice
etc.
AddOns:
Selected
ID
ServiceID
Name
Quantity
UnitCost
TotalCost
etc.
サービスをドロップダウンフィールドとして表示し、そのサービスの利用可能なアドオンをグリッドに入力します。フィールド 'TotalCost'は、それ自身の列のグリッドに表示される計算フィールドです。 「選択済み」フィールドは、グリッドに表示されたチェックボックスを追跡して、顧客がその特定のアドオンを必要としていることを示すために使用されます。
これはすべて正常に動作します。私は今、サービスとアドオンの合計コストを計算する必要があります。
ClientDataSetServices.FieldByName('BasePrice').Value
ただし、私は各選択されたアドオンからTotalCostを取得することができません。私はAggregateフィールドを使うことができると思っていましたが、私の検索ではマスター/ディテールの設定を使用することができませんでした。また、ClientsDataSetの詳細を次のように繰り返してみました。
(within the CalcFields method of the details ClientDataSet)
// Add parts to parts cost
grdMain.DataSource.DataSet.First;
while not grdMain.DataSource.DataSet.Eof do begin
if (grdMain.DataSource.DataSet.FieldByName('Selected').Value) then begin
FPartsCost := FPartsCost +
grdMain.DataSource.DataSet.FieldByName('TotalPrice').Value;
end;
grdMain.DataSource.DataSet.Next;
end;
ただし、これによって無限ループが発生します。このコード部分をデバッグすると、DataSet.FirstがCalcFields(またはCalcFieldsを呼び出している何か)を呼び出しています。
選択したアドオンのデータセットを反復処理して、選択または数量が変更されたときに、合計コストを動的に計算する方法を教えてください。
--EDIT--
次のように私はセットアップに詳細テーブルに集計を試してみました: アクティブを次のようにフィールドを設定します
- を追加しましたTAggregate 'AggregatePrice'
- - True 名前 - 集計価格 ' 式 - SUM(合計価格) グループ化レベル - 1 IndexName - ServiceId 可視 - 真
私はこれを実行すると、私は「internalcalcを使用し、フィールド 『TotalPrice』集計に使用するcalcualtedフィールドの正しいタイプではありません」というエラーメッセージが取得
*「これはマスター/詳細設定を使用して実行できません」* - これは正しくありません。「TAggregateFieldまたは「TAggregate」についてはまだ読んでいますか? –
元の質問のEDITを参照してください。 – BrianKE
私は編集を見ることができません... –