こんにちは私は "All.OrdAll"フィールドを計算するか、または各入力値に対してFields Ord ..の合計を計算するようにしたいと考えています。実行時にclientdataset(CDS)を作成します。 CDを変更するにはクローズする必要がありますが、クローズすると、計算する必要があるフィールドにアクセスできなくなります。仮想(ftADT)であることに注意してください。 いくつかのコードを参考にしてください。 (FieldDefs.Addを使用して、元の間違った提案から変更)デルファイでClientdatasetの仮想(ftADT)計算フィールドを作成する方法
with cds do
begin
Close;
fieldDefs.Clear;
FieldDefs.Add('SN',ftInteger);
FieldDefs.Add('NAME',ftString,40);
FieldDefs.Add('ALL',ftADT,3);
FieldDefs.Add('OrdAll',ftFloat);
FieldDefs.Add('KolAll',ftFloat);
FieldDefs.Add('MinAll',ftFloat);
For i:=0 to High(Bases)
do begin
FieldDefs.Add(Bases[i].Name,ftADT,4);
FieldDefs.Add('Price'+IntToStr(Bases[i].SN),ftFloat);
FieldDefs.Add('ORD'+IntToStr(Bases[i].SN),ftFloat);
FieldDefs.Add('Kol'+IntToStr(Bases[i].SN),ftFloat);
FieldDefs.Add('MIN'+IntToStr(Bases[i].SN),ftFloat);
end;
CreateDataSet;
end;
cds.close;
TADTField(cds.FieldByName('All')).Fields.FieldByName('OrdAll').
FieldKind:=fkInternalCalc;
cds.FieldDefs.Update;
cds.Open;
を返し、あなたの 'cds'は、ネストされたが含まれていることになっていますデータセット? 'Bases'は何と宣言されていますか? – MartynA