2014-08-28 51 views
2

以下Delphi函數可用於將fkInternalCalc添加到TClientDataset。 這很有用,因爲我可以爲每條記錄存儲一些信息,進行計算或存儲臨時標誌。在TSQLQuery上創建一個fkInternalCalc字段

相同的代碼在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; 
+0

任何解決方法? – Jako 2014-08-29 10:00:10

回答

0

之前已打開的數據集。

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

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