Cannot add calculation field to clientdataset

841 views Asked by At

I am trying to add a calculation field to an existing data set created with fieldDefs.add using the code below with many variations I found on several sites including stack overflow.

But the fieldDefs created by the fieldDefs line or by the dataSet line are lost on update by FieldDefs.count.

Fields.counts persist but are not saved to XML files.

No exceptions are raised.

Does anyone have any idea what is going on here? Thanks

MYclientDataSet.CreateDataSet;
MYclientDataSet.open;
MYclientDataSet.FieldDefs.Update;
MYclientDataSet.Active := False;
for i := 0 to MYclientDataSet.FieldDefs.Count - 1 do
    MYclientDataSet.FieldDefs[i].CreateField(MYclientDataSet);
fld := TStringField.Create(MYclientDataSet);
with fld do begin
     FieldName := 'PartSummary';
     FieldKind := fkCalculated;
     Calculated := True;
     Name := cds.Name + FieldName;
     DataSet := MYclientDataSet;
     MYclientDataSet.FieldDefs.Add('PartSummary', ftString, 30, false);
     MYclientDataSet.FieldDefs.update;
end;
MYclientDataSet.active := true;
MYclientDataSet.open;
MYclientDataSet.edit;
1

There are 1 answers

1
Ashlar On

According to Cary Jensen in the Delphi education link Defining a Clientdataset's Structure... you cannot create a calculated, lookup, aggregate field using FieldDefs. You must use TFields instead.