我有一个 TClientDataSet
,它由 TTable
的数据集提供。
数据集有两个字段:邮政编码(字符串,5)和街道(字符串,20)
在运行时我想显示第三个字段(字符串,20)。该字段的例程是获取邮政编码作为参数,并返回属于该邮政编码的城市。
问题仅在于将计算字段添加到现有字段中。填充数据本身不是问题。
我试过:
cds.SetProvider(Table1);
cds.FieldDefs.Add('city', ftString, 20);
cds.Open;
cds.Edit;
cds.FieldByName('city').AsString := 'Test'; // --> errormessage (field not found)
cds.Post;
cds是我的clientdataset,Table1
是一个paradox Table,但是其他数据库也是一样的问题。
提前致谢
最佳答案
如果您想添加基础数据中现有字段以外的其他字段,您还需要手动添加现有字段。添加字段时需要关闭数据集,但如果您不想手动跟踪所有字段详细信息,则可以使用 FieldDefs.Update
获取必要的元数据。基本上是这样的:
var
i: Integer;
Field: TField;
begin
cds.SetProvider(Table1);
// add existing fields
cds.FieldDefs.Update;
for i := 0 to cds.FieldDefs.Count - 1 do
cds.FieldDefs[i].CreateField(cds);
// add calculated field
Field := TStringField.Create(cds);
Field.FieldName := 'city';
Field.Calculated := True;
Field.DataSet := cds;
cds.Open;
end;
另见 excellent article通过 Cary Jensen .
关于database - 如何在运行时向客户端数据集添加字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4934103/