Создание отчетов FastReport в Delphi

Для создания простейшего отчета по приходу товара базы данных «Склад» потребуется разместить на форму PrihodForm два компонента:

-TfrDBDataSet,

-TfrReport вкладки FastReport .

Невизуальный компонент TfrDBDataSet представляет собой источник данных для отчета, ориентированный на данные из таблицы БД или запроса. Компонент выполняет одну-единственную задачу: предоставить генератору отчетов методы для навигации по набору данных (под навигацией понимается установка на начальную запись и последовательный выбор записей, пока не будет достигнут конец набора данных). Компонент TfrDBDataSet является посредником при подключения к TDataSet. В свойстве DataSet компонента TfrDBDataSet указываем значение MySqlQuery4. Дополнительно можно указать на необходимость открыть источник данных перед построением отчета, установив значение OpenDataSource в True и/или закрыть источник, установив значение CloseDataSource в True.

Для просмотра полей набора данных передаваемых в форму отчета, необходимо вызвать правой кнопкой по компоненту TfrDBDataSet контекстное меню и выбрать пункт Edit Field Aliases появляется диалоговое окно. При первом запуске поля могут не отображаться для этого необходимо нажать на кнопку Update и подтвердить изменения OK. В данном случае все поля будут находиться в форме отчета и к ним можно получить доступ через имя компонента frxDBDataset1 и фактическое имя в наборе данных (см. рис.).

Диалоговое окно «Edit Aliases»

Компонент TfrReport является визуальным генератором отчетов. Компонент снабжен встроенным дизайнером, который предоставляет пользователю удобные средства для разработки внешнего вида отчета и позволяет сразу выполнить предварительный просмотр. Дизайнер вызывается из контекстного меню компонента (пункт Edit Report). В первый раз отображается пустая форма отчета (см. рис.).

Рис. Дизайнер FastReport.

Компонент FastReport является бэнд-ориентированным построителем отчетов, в приложение приведен перечень используемых бэндов и выполняемых ими функций. В зависимости от типа бэнда вызываются разные редакторы. Редактор для дата-бэндов позволяет выбрать источник данных из списка доступных либо выбрать виртуальный источник данных.

На каждый бэнд могут размешаться объекты FastReport (см. рис.). Одним из основных является объект Text Object. Представляет собой произвольным образом обрамленный прямоугольник с многострочным текстом внутри. С помощью панели инструментов Text и Frame задается цвет текста/заливка, тип рамки, толщина рамки и цвет, все параметры шрифта текста, выравнивание текста внутри прямоугольника и ориентация текста (норм./90 градусов).

Рис. Панель инструментов FastReport.

В объект можно поместить многострочный текст с переменными, которые обрамляются квадратными скобками. При формировании отчета, когда в объекте обнаруживается переменная, вызывается событие, которому передается имя переменной (выражение) и ожидается возврат ее значения.

Внутри переменных могут использоваться функции: функции работы со строками; арифметические функции; системные функции

Редактор объекта позволяет редактировать содержимое, быстро вставлять переменные, выражения и поля доступных таблиц БД, а также редактировать внутренний программных код FastReport.

Помимо основного редактора, имеется редактор, позволяющий выбрать формат отображения имеющихся в тексте переменных (см. рис ). Вызвать его можно либо из контекстного меню объекта, либо из инспектора объектов (свойство DisplayFormat).

Рис. Диалоговое окно Display Format.

Переменная может отображаться как текст, число, дата, время, булевское значение (список в левой части окна). Для каждого из этих типов (кроме текстового представления) можно выбрать один из нескольких способов. Указанные опции форматирования будут воздействовать на все переменные, содержащиеся в объекте. Если переменная не может быть отформатирована указанным способом, она выводится как текст.

Для того, чтобы отобразить объект другим шрифтом или цветом в зависимости от выполнения какого-либо условия, можно воспользоваться диалогом HighLight(рис. ) Диалог можно вызвать с помощью кнопки на панели инструментов Text.

Рис. . Диалоговое окно Highlight.

К примеру, необходимо выделить суммы заказов, превышающие 1000$ жирным шрифтом. Для этого в объекте, содержащем сумму заказа, в диалоге указывается условие – Value > 1000 и задаются параметры шрифта. Условие выделения можно указать и по-другому – [Part total] > 1000. Другой пример использования выделения – для придания отчету презентабельного вида можно сделать чередующуюся раскраску строк данных. Для этого на бэнд надо поместить объект Text, растянуть его по ширине секции, в диалоге выделения набрать условие [LINE#] mod 2 = 0 и указать цвет.

Разместим на форму отчета бэнд Report Title из набора бэндов Insert Band . Для создания заголовка поместим в бэнд объект Text Object которому присваивается имя Memo1.

Печатаем заголовок отчета в диалоговом окне Memo (см. рис.) и подтверждаем нажатием на кнопку или отменяем действие .

Рис. Диалоговое окно Memo.

В результате на форме отчета помещается неполный заголовок, который необходимо растянуть по вертикали и горизонтали на весь бэнд и задать оформление (см. рис. 2.15).

Рис. Редактирование объекта Text Object.

Для создания заголовка таблицы разместим бэнд Page Header из набора бэндов Insert Band. Разместим объекты Text Objeсt следующим образом (см. рис. 2.16):

Рис. Заголовок таблицы в отчете.

Для отображения набора данных на форме отчета необходимо его подключить в диалоговом окне Select Report DataSets (менюReport вкладка Data). Затем разместим бэнд Master Data, который используется для вывода записей из указанного набора данных (см. рис.):

Рис.. Диалоговое окно Select DataSet.

Поместим в этот бэнд пустые объекты Text Object для вывода записей набора данных по полям набора данных. При подводе курсора в каждом объекте появляется значок , позволяющий указывать выводимое поле набора данных (см. рис.).

Рис.. Выбор поля набора данных объекта Text Object.

Затем необходимо задать оформление каждому объекту Text Object (см. рис. 2.19):

Рис.. Внешний вид отчета.

Для результирующего общего подсчета (поступившего на склад товар или его стоимости) можно использовать бэнд ReportSummary, разместив в него объекты Text Object. Переменные данного объекта могут содержать агрегирующие функции имеющую формат:

  • Sum(<expression> [,band] [,1]). Вычисляет сумму выражения expression для ряда строк данных. Если параметр band не задан, то сумма считается по строке данных, соответствующей данному бэнду (по бэнду MasterData); иначе сумма считается только по бэнду с именем band.

Sum([Part total], Band1);

Sum([[Part total] + [Part price]]);

Sum([Part total], Band1, 1).

  • Avg, Min, Max. Синтаксис аналогичен функции Sum. Функция Avg вычисляет среднее арифметическое, функция Min возвращает минимальное, функция Max — максимальное значение из ряда.
  • Count(<band>). Возвращает количество строк данных. Пример использования:

Count(Band1).

Создадим бэнд, выводящий общее количество поступившего на склад товара (см. рис.):

Рис. . Использование бэнда ReportSummary.

Заканчивается форма отчета бэндом Page Footer в котором располагаются объекты выводимы в конце отчета (см. табл. ), например дата создания отчета, место печати.

Рис. Использование бэнда PageFooter.

Затем необходимо сохранить отчет в папке приложения c помощью меню File->Save. Данный отчет будет подключен к компоненту frxReport автоматически. Потом на форме необходимо создать кнопку и в обработчик события вставить код frxReport1.ShowReport.

Leave a Comment