Delphi. Делаем простой DBPaginator на примере MySQL

Понадобилось ручное листание страниц (определенного заранее числа записей на странице). Пользуюсь FireDAC, знаю, что там это уже реализовано, но после нескольких попыток понял, что хочу сделать такую штуку сам, поскольку явно пригодится в других языках и технологиях. Итак, вот что у меня получилось.

47

48

Проект выглядит примерно так…

46

Исходники

385_FireDacRowsFetching

Описание кода

Как видно здесь 2 FDQuery ,один из них основной, другой просто считает число записей в таблице. SQL запрос основного FDQuery должен быть без точки с запятой на конце, так как мы должны добавить инструкцию LIMIT StartRow, CountOfRows к основному запросу. Я здесь не делал акцент на подключении, а просто забил параметры подключения в FDConnection и подключил Queries к FDConnection визуально, хотя по хорошему, надо подключать их в коде. Но хотелось сосредоточиться на другом, именно на паджинаторе. Итак, основная работа у нас происходит в uDBPagination.

Требования к запросу SQL

В принципе он может быть любым SELECTом, главное, чтобы в его конец можно было добавить инструкцию LIMIT StartRow, CountOfRows 

В моем случае это был

Функционал 

-загрузить первую страницу

-загрузить следующую страницу

-загрузить предыдущую страницу

Далее описание юнитов

uDBPagination

uMain

This entry was posted in Delphi, MySQL. Bookmark the permalink.