我在运行时为FieldDefs
创建TClientDataSet
。仍然在运行时我想删除所有FieldDefs
。我将TClientDataSet
物理保存到光盘文件中。我尝试使用以下代码删除现有FieldDefs
,以便添加新代码。但它不起作用:
with fDataSet do begin
Active := False;
DisableControls;
FieldDefs.Clear;
Fields.Clear;
EnableControls;
end;
执行此代码后,FieldDefs
和Fields
计数为0
,但如果我关闭并重新打开disc file
,FieldDefs
和{{1}仍然存在。
更改Fields
和FieldDefs
的正确方法是什么?
答案 0 :(得分:2)
您必须按照以下几行将旧数据集结构中的数据泵入新数据:
E.g。
while not FOldDataSet.Eof do
begin
FNewDataSet.Insert;
FNewDataSet['FIELD1'] := FOldDataSet['FIELD3'];
FNewDataSet['FIELD2'] := CDefaultFIELD2;
FNewDataSet.Post;
FOldDataSet.Next;
end;
答案 1 :(得分:1)
连续打开从内部数据集重新创建字段。只需清除旧字段defs,添加新字段并重新创建数据集:
...
CDS.FieldDefs.Clear;
CDS.Fields.Add(...);
...
CDS.Fields.Add(...);
CDS.CreateDataSet;
...