Прокручивание в DBGrid

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
mrkaban
новенький
Сообщения: 55
Зарегистрирован: 28.05.2016 08:48:18
Контактная информация:

Прокручивание в DBGrid

Сообщение mrkaban »

Здравствуйте Уважаемые Форумчане!

Сразу прошу прощения за глупый вопрос, но что-то не могу разобраться. Используется компонент DBGrid.

Речь об индикаторе положения сбоку. Изображение

Столкнулся с проблемой, что по мере прокрутки вниз, он может изменяться, как будто дополнительная информация погружается.

То есть, изначально отображается один размер, но когда начинаешь прокручивать вниз, по мере прокрутки он меняется.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Потому что датасет отдает прописанный в нем буфер первых записей
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Каким набором данных пользуешься? Посмотри у него метод FetchAll. Если есть - то можешь вызвать его после открытия датасета.
Lucifer
постоялец
Сообщения: 133
Зарегистрирован: 05.01.2014 21:39:03
Откуда: Новороссийск

Сообщение Lucifer »

alexs писал(а):Если есть - то можешь вызвать его после открытия датасета.

Но лучше так не делать. Если данных будет много, то есть риск поиметь большой геморрой.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Lucifer писал(а):Но лучше так не делать. Если данных будет много, то есть риск поиметь большой геморрой.

А зачем тогда писать такие запросы? С большим набором данных в итоге? И потом его не выбирать? Зачем сервер мучать?
И кстати - FireBird такое позволяет. А тот же MS SQL - нет. Будь добр забрать все данные. Да и PG также.
Мой FBDataSet может не выбирать всё. А вот ZEOS по умолчанию работает с выборкой всего.
mrkaban
новенький
Сообщения: 55
Зарегистрирован: 28.05.2016 08:48:18
Контактная информация:

Сообщение mrkaban »

Прошу прощения, я новичок. У меня используется SQLite = TSQLite3Connection + TSQLTransaction + TDataSource + TSQLQuery. Прошу прощения, мне следовало данный момент прояснить сразу, не подумал.

Добавлено спустя 9 минут 16 секунд:
На
SQLQuery1.FetchAll;
говорит
main.pas(543,11) Error: identifier idents no member "FetchAll"
, может нужно какую-то библиотеку подгрузить?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Значит, FetchAll в этих компонентах не поддерживается.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Код: Выделить всё

TSQLQuery.PacketRecords := 0
mrkaban
новенький
Сообщения: 55
Зарегистрирован: 28.05.2016 08:48:18
Контактная информация:

Сообщение mrkaban »

При попытке поставить 0 пишет
PacketRecords has to be larger then 0


По умолчанию стояло 10. Однако, поставив 100 обнаружил, чтобы проблема пропала.

Спасибо большое!!!
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

mrkaban или -1 надо написать. Не помню уже. Это выборка всех данных, а не кусками.

Добавлено спустя 4 минуты 31 секунду:
http://wiki.freepascal.org/SqlDBHowto

An alternative is available. The number of records returned by the server is set by the '.PacketRecords' property. The default value is 10; if you make it -1 then all records will be loaded at once.
In current stable FPC, '.RecordCount' does not take filters into account, i.e. it shows the unfiltered total.
mrkaban
новенький
Сообщения: 55
Зарегистрирован: 28.05.2016 08:48:18
Контактная информация:

Сообщение mrkaban »

Интересно... но 1 тоже попробовал, ошибки не было, но не помогло...

Я правильно понимаю, что это количество данных, которое подружается?
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

mrkaban минус 1 .........
mrkaban
новенький
Сообщения: 55
Зарегистрирован: 28.05.2016 08:48:18
Контактная информация:

Сообщение mrkaban »

Действительно, с минус 1 тоже работает. Спасибо!
Ответить