【发布时间】:2014-08-28 12:47:50
【问题描述】:
以下 Delphi 函数可用于将 fkInternalCalc 添加到 TClientDataset。 这很有用,因为我可以为每条记录存储一些信息,进行计算或存储临时标志。
相同的代码在 Lazarus 中不起作用,它在 DataSet.FieldDefs.Update 处停止。
有没有办法实现相同的功能? 请记住,可以更改数据库字段并应用所做的更改。
使用该函数的 Delphi 代码是:
AddDummyField(qry,TIntegerField,'PROCESS_ACTION');
qry.Open;
...
function AddDummyField(Dataset:TDataset;fieldClass:TFieldClass;fieldName:string;size:integer):TField;
var
i: Integer;
begin
if Dataset.FieldDefs.Count = 0 then
begin
DataSet.FieldDefs.Update;
for i := 0 to DataSet.FieldDefs.Count - 1 do
DataSet.FieldDefs[i].CreateField(DataSet);
end;
Result := Dataset.FindField(fieldName);
if Result <> nil then
exit;
Result := fieldClass.Create(Dataset);
Result.FieldName := fieldName;
Result.FieldKind := fkInternalCalc;
Result.DataSet := Dataset;
if size>0 then
Result.Size := size;
end;
【问题讨论】: