Как сделать интерактивный отчет с детальной страницей в FastReport VCL 5

15.10.2017

В FastReport VCL 5 появилось много нововведений. Одно из них - новые опции гиперссылки. Теперь гиперссылка может указывать на другой отчет или страницу отчета. Благодаря этому мы можем делать интерактивные отчеты. Пример такого отчета с использованием гиперссылки на детализирующий отчет показан в статье "Как сделать интерактивную диаграмму в FastReport VCL5". На этот раз мы рассмотрим другой вариант - гиперссылка на детализирующую страницу.

Ну что ж, приступим. Создадим простой отчет со списком клиентов.

1) На вкладке Data (Данные) добавляем источник данных ADO database. С помощью двойного клика по добавленному объекту открываем редактор подключения. Настраиваем подключение к демонстрационной базе данных demo.mdb из поставки.

Поставщик данных - Microsoft Jet OLEDB 4.0 Provider. Файл базы расположен в папке C:\Program Files (x86)\FastReport 5 VCL Enterprise\Demos\Main\demo.mdb.

Теперь размещаем компонент ADO Query. В его свойстве SQL вводим запрос:

1
2
3
4
5
SELECT * FROM customer a, orders b, items c, parts d
WHERE a.custno = b.custno
 AND b.orderno = c.orderno
 AND c.partno = d.partno
ORDER BY a.company, b.orderno

2) Переходим к странице отчета Page1. Помимо уже существующих бэндов "Заголовок отчета"(ReportTitle) и "Данные"(MasterData) нам потребуется еще один "Заголовок группы"(GroupHeader). Добавим его. При этом нам будет предложено настроить группировку. Выбираем поле CustNo:

Из источника данных перетаскиваем на бэнд "Заголовок группы" следующие поля:

Company, Phone, Fax.

Ниже располагаем бэнд "Данные". Сделаем двойной клик по нему и выберем доступный источник данных:

Мы не будем выводить данные в этом бэнде. Используем его лишь для источника данных для группировки. Устанавливаем у бэнда свойство Visible в false. Вот, что получилось:

3) Самое время приступить к созданию детализирующей страницы, на которой мы будем выводить подробную информацию для выбранной на первой странице группы. Добавляем еще одну страницу в отчет с помощью пиктограммы на верхней панели инструментов. Страница пуста. Добавим на нее следующие бэнды: "Заголовок группы", еще один "Заголовок группы", "Данные", "Подвал группы".

Для первого заголовка группы выбираем поле группировки - CustNo.

Для второй - OrderNo.

Для бэнда "Данные" выбираем доступный источник данных.

Разместим на первом бэнде "Заголовок группы" поля: Company, Phone и Fax. Как вы заметили, эта группировка совпадает с группировкой на первой странице отчета.

Изменим цвет фона, добавим заголовки.

На втором бэнде "Заголовок группы" размещаем поля: OrderNo и SaleDate.

В этом же бэнде, чуть ниже вы будем выводить заголовки для полей в бэнде "Данные": Part, Description, Price, Qty, Total.

Наконец, размещаем поля на бэнде "Данные": PartNo, Description, ListPrice, Qty. А для Total добавим такое выражение:

[ < ADOQuery1."Qty" >* < ADOQuery1."ListPrice" >]

Теперь бэнд "Данные" выглядит так:

В бэнд "Подвал группы" добавляем текстовое поле и вводим следующее выражение:

Total: [Sum( < ADOQuery1."Qty" >* < ADOQuery1."List Price" >)]

Как вы поняли, это сумма всех итогов. Общий итог:

4) Нужно создать переменную SelectedValue в отчете. В нее мы сохраним имя выбранную компанию на первой странице. Затем отфильтруем данные на второй странице:

5) Сделайте двойной клик по бэнду "Данные". В поле Filter вводим выражение:

< ADOQuery1."Company" > = < SelectedValue >

6) Перейдем к первой странице. Нас интересует поле Company в бэнде "Данные". Выделите его. В инспекторе свойств найдите Hyperlink и раскройте. Так как детализирующий отчет расположен на воторой странице, то в свойстве DetailPage пишем Page2. В свойстве Expression задаем выражение, которое будет передаваться в переменную отчета. Далее задаем тип гиперссылки в свойстве Kind. Значение hkDetailPage. И вводим имя переменной отчета SelectedValue в свойстве ReportVariable.

Вот и все. Запускаем отчет:

Выбираем имя какой-либо компании:

И получаем детализирующий отчет.

Вместо второй страницы в отчете можно использовать отдельный отчет. Но если вы не любите отдельные файлы и считаете, что отчет должен быть самодостаточным, то вариант с детализирующей страницей для вас.

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

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