【问题标题】:Create a fkInternalCalc field on TSQLQuery在 TSQLQuery 上创建一个 fkInternalCalc 字段
【发布时间】: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;   

【问题讨论】:

    标签: delphi lazarus fpc


    【解决方案1】:

    您必须先打开数据集。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 2011-12-19
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多