Я работаю с ADO, подключаясь к SQL Server 2005.
Мой TADODataSet выбирает 1 миллион записей. используя TDBGrid и устанавливая TADODataSet.CursorLocation
в clUseServer
работает. но TDBGrid задыхается!
Как я могу выбрать 1 миллион записей, избежать подкачки и по-прежнему иметь возможность отображать записи в сетке, не извлекая ВСЕ записи на сторону клиента, позволяя сетке читать вперед при прокрутке вверх и вниз?
Менеджер предприятия SQL может выполнить запрос и выбрать 1 миллион записей асинхронно без каких-либо проблем (также MS-ACCESS).
TClientDataSet.PacketRecords
звучит многообещающе для вас. Я никогда не пробовал это и не могу проверить сейчас, но кажется, что если вы установите его на видимое количество строк сетки БД и получите данные вTClientDataSet.BeforeGetRecords
, то вы получите то, что хотите. Другое дело, что вам придется самостоятельно обрабатывать прокрутку (поскольку сетка БД не будет знать общее количество строк), и вам придется извлекать данные вручную. - person TLama   schedule 18.12.2011CursorType
иCacheSize
, о которых вы упомянули, влияют на выборку?PacketRecords
тоже влияет? Я не говорю о теории, зачем извлекать так много данных, скажем, мне нужно извлекать их постепенно по какой-то причине. Я хотел бы знать, что я должен настроить для этой автоматической добавочной выборки. Какой-то пример кода был бы лучшим;) - person TLama   schedule 18.12.2011