У нас есть TDBGrid, подключенный к TClientDataSet через TDataSetProvider в Delphi 7 с базой данных Oracle.
Показывать содержимое небольших таблиц нормально, но программа зависает, когда вы пытаетесь открыть таблицу с большим количеством строк (например, 2 миллиона строк), потому что TClientDataSet пытается загрузить всю таблицу в память.
Я попытался установить "FetchOnDemand" в True для нашего TClientDataSet и "poFetchDetailsOnDemand" в True в параметрах для TDataSetProvider, но это не помогло решить проблему. Какие-нибудь идеи?
Обновление:
Мое решение:
TClientDataSet.FetchOnDemand = T
TDataSetProvider.Options.poFetchDetailsOnDemand = T
TClientDataSet.PacketRecords = 500
Мне удалось решить проблему, установив свойство «PacketRecords» для TCustomClientDataSet. Это свойство указывает количество или тип записей в одном пакете данных. PacketRecords автоматически устанавливается на -1, что означает, что один пакет должен содержать все записи в наборе данных, но я изменил его на 500 строк.