在TSQLQuery上创建一个fkInternalCalc字段

时间:2014-08-28 12:47:50

标签: delphi lazarus fpc

以下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;   

1 个答案:

答案 0 :(得分:0)

您必须先打开数据集。

...
DataSet.Open;
DataSet.FieldDefs.Update;
DataSet.Close;

for i := 0 to DataSet.FieldDefs.Count - 1 do
  DataSet.FieldDefs[i].CreateField(DataSet);
...