我試圖計算字段添加到使用下面的代碼與我的幾個網站,包括堆棧溢出,發現了許多變化與fieldDefs.add
創建的現有數據集。無法添加計算領域的ClientDataSet
但由fieldDefs
行或dataSet
行創建的fieldDefs
在更新FieldDefs.count
時丟失。
Fields.counts
堅持但不保存爲XML文件。
沒有異常升高。
有沒有人有任何想法是怎麼回事? 感謝
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;
爲什麼你需要打開兩次?這可能不是問題,可能需要或無害。但這似乎很奇怪。 –
在調用'CreateDataSet'之前,您應該添加所需的所有字段,包括計算的字段。 – MartynA
我從來沒有叫'update'加入後再次計算field..I相信'update'打開表,並將其關閉,所以在這一個程序,你打開表三次......不要打開它,直到你完成了。和'active:= true'和'open'做同樣的事情,所以選擇一個(我更喜歡'open')。 –