2013-12-20 20 views
2

首先,請不要問我爲什麼需要這樣做。除非你能告訴我如何直接將TFDDataset轉換爲_RecordSet,否則請不要問。 :-)如何將TFDDataset轉換爲TADODataset?

所以,這是我的問題:

舉一個TFDDataset,我怎麼可以轉換數據集成TADODataset?

的TFDDataMove組件將只能移動一個FireDac數據集,而不是別的。

你會推薦什麼樣的策略?蠻力(迭代字段和記錄...)是我能想到的唯一的事情,但也許我錯過了一些更容易或更好的方式。

謝謝。

+0

我不認爲你可以直接做到這一點 - 你必須「蠻力」吧,就像你說的(創建TADODataSet手動和一次從TFDDataset一個記錄/字段複製信息)。 如果您提前知道記錄佈局(即,如果它是針對特定用途而不是一般例程),那麼您可以通過提前定義TADODataset來簡化操作。 – HeartWare

+0

我認真地懷疑你可以做出更好的方式,但是你可以調查Jedi JVCL DB組件,我似乎記得他們有一個讓人聯想到舊的BDE的數據泵。 –

+2

你需要用'_RecordSet'做什麼?很久以前,我寫了一個封裝器,可以將任何'TDataSet'暴露爲'_RecordSet',但是我只實現了導航記錄集和讀取字段值(只讀訪問)所需的最小接口。 –

回答

4

好的,我將它移植到Delphi XE4,並開始添加書籤支持,以便您可以將它與TADODataSet掛鉤,並使用TDataSource和數據感知控件。如果您在切換到ADO數據集後立即導航到最後一條記錄,那麼在某處導致dbgrid引發「網格索引超出範圍」錯誤的問題似乎仍然存在。無論如何,這是我的。

聖誕快樂,尼克!

ADORecordSet.pas

測試項目: Project1.dprUnit1.pasUnit1.dfm

+0

+1非常有趣!我個人從未想過這樣的概念/實現,並創建一個斷開連接的ADO'_Recordset'並使用「強力」來填充記錄集(這不是一件困難的任務),我也想知道爲什麼Q得到了低估(我的+1)。 – kobik

相關問題