| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Лечим прокрутку для ADODataSet с clUseServer |
| Автор: Чучмек 10.3.2013, 12:47 | ||||||||||
| Если использовать серверный курсор, прокрутка имеет всего три позиции - начало,конец, и посредине( сдвиг на страницу). Пришлось разобраться с серверным курсором. Это замена, для постраничной, выборки от мелкософта. Отсутствие LIMIT, было для меня большим разочарованием в MS SQL Разбираясь с прокруткой нашел следующие DBGrids
и ADODB
Переопределяем IsSequenced
Запускаем. Тревожное ожидание. Подозрительная задержка. Но вот появляется... О чудо!!! Нормальная прокрутка!!! Смотрим сколько данных было получено... Восторг пропадает. Грузилось так, как если бы вся таблица целиком. Ищем причину. Причина кроется в вызове метода Get_RecordCount интерфейса Recordset15. Легко проверить посмотрев сколько времени выполняется вызов GetRecordCount ( и сколько при этом подгружается данных). Возможно в другой версии Microsoft ActiveX Data Objects Library эта проблема устранена. Поскольку определить число строк в курсоре, при работе с курсором средствами TSQL, очень просто (переменная @@CURSOR_ROWS после открытия курсора). Я пойду на хитрость. Переопределю GetRecordCount.
|
| Автор: Illusion Dolphin 10.3.2013, 13:00 | ||
В MS SQL есть TOP, ROW_NUMBER ( ) и другие примочки |
| Автор: Чучмек 10.3.2013, 13:06 |
| TOP это TOP - первые n записей. Все остальное, кроме курсора - костыли. |