簡體   English   中英

Delphi Firedac內存表

[英]Delphi Firedac Memory Tables

我正在嘗試用Firedac MemoryTables替換運行正常但對大型數據非常慢的Delphi ClientDatasets,我在數據模塊中創建了FireDac Memory Table並從表單中填充了它。 在表格中,我檢查“內存表”的記錄計數,其中包含記錄。 然后我關閉內存表並重新打開它,但是打開后它返回一個空表。

Dataform.mtDebTran.FileName := CdsDir + '/DebTran.Fds';
DataForm.mtDebTran.CreateDataSet
DataForm.mtDebTran.CreateDataSet;
DataForm.mtDebTran.Open;
DataForm.BuildDebTranTemp1(P1,P2,P3,P4,True,True);
DataForm.mtDebTran.SaveToFile(CdsDir + '/DebTran',sfBinary);
ShowMessage(IntToStr(DataForm.mtDebTran.RecordCount));
DataForm.mtDebTran.Close;
DataForm.mtDebTran.Open;
ShowMessage(IntToStr(DataForm.mtDebTran.RecordCount));`     

那是您的真實代碼,並且完整嗎? 您連續兩次調用CreateDataSet

DataForm.mtDebTran.CreateDataSet
DataForm.mtDebTran.CreateDataSet;

出於沒有明顯的原因,但是無論如何,如果您的mtDebTran數據集應該在第一次調用CreateDataSet之前包含數據,則該調用將清空它,因為這是應該做的。

您說“但是打開后它返回一個空表”。 大概是想問為什么會這樣。 好吧,在

DataForm.mtDebTran.Close;
DataForm.mtDebTran.Open;

在調用.Close之后,mtDebTran將不包含任何數據,因為在調用.Close並調用.Open時,DataSet會丟棄其數據,而數據集將仍然為空。 要獲取數據,您需要從.SaveToFile中創建的文件中重新加載數據。 還是不打電話。首先關閉。

順便說一句,在您的代碼中,mtDebTran是DataForm的成員,但在您的q文本中。 您說“我在數據模塊中創建FireDac內存表”,因此推測FireDac表與mtDebTran不同嗎?

順便說一句,如果mtDebTran實際上是一個TClientDataSet,則在您的q中提及FireDac表,其標題無關緊要,並且具有誤導性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM