FastReport. Динамическое создание отчетов. Вывод данных из БД

Продолжаем цикл статей про динамический вывод данных из Fasteport. Посмотрим как можно вывести данные динамически, также моя дизайнерская душа не удержалась, и я немного занялся оформительством, добавил градиенты в отчет. Получилось  так…

21

Имя и Фамилия это соответственно поля Name и Family из БД. Итак, приступим к динамическому выводу данных из БД при помощи FastReport.

Начали!

Создадим VCL приложение и разместим на нём следующие компоненты

22

 

К frxDBDataSet подключите любые данные, которые Вам необходимы. Я пользовался библиотекой FireDAC и подключил MySQL базу с запросом

Не буду останавливаться на подключении к БД и получении данных в FDQuery, покажу лишь, что я создал в отдельном DataModule

23

Вы можете подключиться по Вашей любимой технологии. Сосредоточимся на FastReport в данной статье.

Перед тем как мы напишем основной код, давайте примерно разметим в дизайнере, что мы будем делать.

24

Интересный момент в том – что мы можем проектировать как угодно наш отчет, но при генерации, благодаря инструкции

он сотрется и загрузится тот, что мы сделаем динамически! На мой взгляд это удобное обстоятельство.

Как узнать о классах, которые нам нужны? На примере класса Gradient

Тут несколько вариантов. Первый и самый простой – в дизайнере создать тот элемент который нам нужен, выбрать его и посмотреть в объектном инспекторе.

25

Если юнита для этого класса нет в uses – Вы об этом узнаете через ошибку компиляции. В этом случае – просто найдите какой юнит нужен и добавьте в uses.

Всё остальное – дело техники!

Вот как я обработал нажатие на кнопку

Выводы

Мы вывели данные из БД динамически, соблюдая основное правило для построения БЭНДОВ.

Они не должны пересекаться!!!

В остальном – принцип такой же как и при построении в дизайнере отчетов, при обилии данных число страниц будет увеличиваться.

Также мы посмотрели как можно узнать о классах тех или иных элементов. Единственное, что хотелось бы добавить – иногда может не хватать тех или иных юнитов, тогда их просто можно описать в uses, например, для градиента я прописал юнит frxGradient в uses. О нём я узнал случайно, из сети, но думаю есть какой-то способ – узнавать юниты классов системно. Об этом поговорим в других статьях.

Далее, в следующей статье, попробуем организовать вывод большого количества данных и посмотрим как “размножаются” страницы отчетов))

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