我們有一個TDBGrid,它通過Delphi 7中的TDataSetProvider與Oracle數據庫連接到TClientDataSet。Delphi:客戶端數據集不適用於Oracle中的大表格
它可以很好地顯示小表的內容,但是當您嘗試打開一個有許多行的表(對於2百萬行)時程序掛起,因爲TClientDataSet嘗試在內存中加載整個表。
我嘗試在TDataSetProvider的選項中爲我們的TClientDataSet和「poFetchDetailsOnDemand」設置爲「FetchOnDemand」爲True,但它無助於解決問題。任何ides?
更新:
我的解決辦法是:
TClientDataSet.FetchOnDemand = T
TDataSetProvider.Options.poFetchDetailsOnDemand = T
TClientDataSet.PacketRecords = 500
我成功通過設置TCustomClientDataSet了 「PacketRecords」 屬性來解決這個問題。該屬性表示單個數據包中記錄的數量或類型。 PacketRecords自動設置爲-1,這意味着一個數據包應包含數據集中的所有記錄,但我將其更改爲500行。
我認爲[這篇文章](http://stackoverflow.com/questions/343553/how-to-prevent-delphi-ado-from-loading-the-entire-table-into-memory)可以幫助ypu。 – Iqbal