У нас есть TDBGrid, который подключен к TClientDataSet через TDataSetProvider в Delphi 7 с базой данных Oracle.Delphi: ClientDataSet не работает с большими таблицами в Oracle
Это хорошо, чтобы показать содержимое небольших таблиц, но программа зависает, когда вы пытаетесь открыть таблицу со многими строками (для более 2 миллионов строк), потому что TClientDataSet пытается загрузить всю таблицу в память.
Я попытался установить «FetchOnDemand» в True для нашего TClientDataSet и «poFetchDetailsOnDemand» в True в параметрах для TDataSetProvider, но это не поможет решить проблему. Любые иды?
Update:
Мое решение:
TClientDataSet.FetchOnDemand = T
TDataSetProvider.Options.poFetchDetailsOnDemand = T
TClientDataSet.PacketRecords = 500
мне удалось решить эту проблему, установив свойство "PacketRecords" для TCustomClientDataSet. Это свойство указывает количество или тип записей в одном пакете данных. PacketRecords автоматически устанавливается в -1, а это означает, что один пакет должен содержать все записи в наборе данных, но я изменил его на 500 строк.
Я думаю [этот пост] (http://stackoverflow.com/questions/343553/how-to-prevent-delphi-ado-from-loading-the-entire-table-into-memory) может помочь ypu. – Iqbal