2015-11-26 64 views
0

使用fireDac,是否有更簡單的方法將FDQuery複製到FDQuery?將記錄集從fdquery複製到fdquery的簡單方法

當前的硬編碼解決方案是將代碼中的每個字段映射到eache代碼中的其他字段並進行發佈和編輯等。

var 
FDQueryThis,FDQueryOther:TFDQuery; 
begin 
    FDQueryThis.active:=true; 
    FDQueryOther.active:=true; 
    FDQueryThisNamelyField.AsInteger := FDQueryThis.NamelyField.AsInteger; 
// some more fields 
FDQueryThis.post; 
end; 

是否有提供此服務的工具或函數? 我沒有看到CopyRecord作爲TFDQuery的成員,那麼如何爲TFDQuery創建記錄?

+2

TFDQuery.CopyDataSet? –

+0

在'TDataSet'中有一個函數'CopyFields',但仍然需要調用目標數據集上的Edit和Post。 CopyRecord做類似的事情。你是什​​麼意思_創建TFDQuery_的記錄? –

+0

你能否提供一個示例代碼?如果我們跳過這個映射,這是90%的工作。編輯和發佈是一小部分。 – none

回答

1

我只是用CloneCursor方法,

FDQueryThis.CloneCursor(FDQueryOther, True, False); 

Here You've got full description

記住但是保持物理數據保持不變。如果你想將數據複製到不同的位置使用。數據屬性:

FDQueryThis.Data := FDQueryOther.Data; 

問候

+0

文檔不太好,當他們寫「共享」時,意味着他們使用相同的數據並從不同的方向指向它。共享就像過程調用中的var變量,而克隆的預期是過程調用中的非var參數。 – none

+1

如果您希望獲得相同的物理數據,但使用不同的索引,過濾選項等,則可以使用CloneCursor。如果您想要將數據複製到另一個數據集中,請使用FDQuery.Data屬性,然後生成的數據集隨後將獨立。 – Vancalar

+0

我很確定這個答案是不正確的。以下代碼在Delphi 10.1 Berlin中引發了一個異常,報告「CommandText不能爲空」。 EmployeeConnection處於活動狀態,EmployeeTable處於活動狀態。 var FDQuery:TFDQuery; begin FDQuery:= TFDQuery.Create(Self); FDQuery.Connection:= EmployeeConnection; FDQuery.CloneCursor(EmployeeTable); –

相關問題