首先,請不要問我爲什麼需要這樣做。除非你能告訴我如何直接將TFDDataset轉換爲_RecordSet,否則請不要問。 :-)如何將TFDDataset轉換爲TADODataset?
所以,這是我的問題:
舉一個TFDDataset,我怎麼可以轉換數據集成TADODataset?
的TFDDataMove組件將只能移動到一個FireDac數據集,而不是別的。
你會推薦什麼樣的策略?蠻力(迭代字段和記錄...)是我能想到的唯一的事情,但也許我錯過了一些更容易或更好的方式。
謝謝。
首先,請不要問我爲什麼需要這樣做。除非你能告訴我如何直接將TFDDataset轉換爲_RecordSet,否則請不要問。 :-)如何將TFDDataset轉換爲TADODataset?
所以,這是我的問題:
舉一個TFDDataset,我怎麼可以轉換數據集成TADODataset?
的TFDDataMove組件將只能移動到一個FireDac數據集,而不是別的。
你會推薦什麼樣的策略?蠻力(迭代字段和記錄...)是我能想到的唯一的事情,但也許我錯過了一些更容易或更好的方式。
謝謝。
好的,我將它移植到Delphi XE4,並開始添加書籤支持,以便您可以將它與TADODataSet
掛鉤,並使用TDataSource
和數據感知控件。如果您在切換到ADO數據集後立即導航到最後一條記錄,那麼在某處導致dbgrid引發「網格索引超出範圍」錯誤的問題似乎仍然存在。無論如何,這是我的。
聖誕快樂,尼克!
測試項目: Project1.dpr,Unit1.pas,Unit1.dfm
+1非常有趣!我個人從未想過這樣的概念/實現,並創建一個斷開連接的ADO'_Recordset'並使用「強力」來填充記錄集(這不是一件困難的任務),我也想知道爲什麼Q得到了低估(我的+1)。 – kobik
我不認爲你可以直接做到這一點 - 你必須「蠻力」吧,就像你說的(創建TADODataSet手動和一次從TFDDataset一個記錄/字段複製信息)。 如果您提前知道記錄佈局(即,如果它是針對特定用途而不是一般例程),那麼您可以通過提前定義TADODataset來簡化操作。 – HeartWare
我認真地懷疑你可以做出更好的方式,但是你可以調查Jedi JVCL DB組件,我似乎記得他們有一個讓人聯想到舊的BDE的數據泵。 –
你需要用'_RecordSet'做什麼?很久以前,我寫了一個封裝器,可以將任何'TDataSet'暴露爲'_RecordSet',但是我只實現了導航記錄集和讀取字段值(只讀訪問)所需的最小接口。 –