Clo*_*ble 7 database delphi tclientdataset dataset
我有一个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;
Run Code Online (Sandbox Code Playgroud)
cds是我的clientdataset,Table1
是一个悖论表,但问题与其他数据库相同.
提前致谢
Ser*_*yuz 20
如果要添加基础数据中存在的其他字段,则还需要手动添加现有字段.在添加字段时,需要关闭数据集,但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;
Run Code Online (Sandbox Code Playgroud)
好吧,我找到了一个更简单的解决方案,因为我的 sql 中有 24 个字段,我不想手动添加它们,所以我在 sql 语句中添加了一个虚拟字段,如下所示:
select ' ' as city, the rest of the fields ...
Run Code Online (Sandbox Code Playgroud)
我可以在我的程序 OnAfterOpen 事件中修改它。
好吧,我必须在 sql 中定义该字段应该有多长,留足够的空格,例如 5 个空格代表 5 个字符,所以我必须知道城市名称可以有多长。
归档时间: |
|
查看次数: |
35439 次 |
最近记录: |