C. *_*eld 2 delphi field runtime tclientdataset
我有一个数据集TclientDataSet,其中的字段是由代码创建的.我需要用户在保留现有数据的同时附加其他字段.
`MYclientDataSet.FieldDefs.Add(s, ftString, 20);
MYclientDataSet.CreateDataset;
MYclientDataSet.Open;
MYclientDataSet.edit;
MYclientDataSet.FieldByName(s).AsString := 'Test';
MYclientDataSet.post;`
Run Code Online (Sandbox Code Playgroud)
这有效,但CreateDataset会删除所有数据.有没有办法将新字段添加到数据集中?
我尝试了很多其他解决方案,但似乎都没有
非常感谢
您可以使用以下代码实现此目的,该代码基本上保存当前数据,创建新的字段结构并将已保存的数据复制回:
var
cds: TClientDataSet;
begin
cds := TClientDataSet.Create(nil);
try
cds.Data := MyClientDataSet.Data;
MyClientDataSet.Close;
MyClientDataSet.FieldDefs := cds.FieldDefs;
MyClientDataSet.FieldDefs.Add('Note', ftString, 20);
MyClientDataSet.CreateDataSet;
cds.First;
while not cds.Eof do begin
MyClientDataSet.Append;
MyClientDataSet.CopyFields(cds);
MyClientDataSet.FieldByName('Note').AsString := 'Test';
MyClientDataSet.Post;
cds.Next;
end;
finally
cds.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |