Как сделать отчет типа Master-Detail

04.09.2019

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

В электронной отчетности самым распространенным типом документа является простой список. Затем, идут сложные списки. Вариаций сложных списков может быть много, но основной – это отчет типа «Главный»-«подчиненный». Суть этого типа в наличии зависимости между сущностями данных по схеме один-ко-многим. То есть одной записи в главной таблице может соответствовать несколько записей в подчиненной. На практике это выглядит так:

Записи из главной таблицы содержат название категорий, их краткое описание и картинку. Каждая категория содержит определенные продукты. Этот пример показывает только одну зависимость «Главный»-«подчиненный». Но подчиненная таблица тоже может иметь свою подчиненную, и тогда она уже будет выступать в роли главной для второй связи. Таких иерархических зависимостей может быть сколь угодно много. А теперь на практике рассмотрим, как создать такой отчет.

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

Добавляем источник данных в отчет. В нашем случае будет две связанные таблицы:

customer и orders.

В окне «Data» это выглядит так:

 

Теперь нам нужно связать эти таблицы. Для этого, нажимаем кнопку Действия (Actions) в окне данных. Откроется выпадающий список:

 

Нужно выбрать пункт «Новая Связь» (New Relation). В форме редактирования связи нам необходимо определить главную и подчиненную таблицу, а также поле, по которому они должны быть связаны:

 

Главная таблица customer, ее первичный ключ CustNo. Подчиненная таблица orders1, ее внешний ключ CustNo. После успешного создания связи, мы увидим ее в окне данных:

Как видите, в таблице orders1 появилась ссылка на customer. Если раскрыть ее, то мы увидим все те же поля, что есть в таблице customer.

Мы подготовили данные, теперь нужно создать шаблон отчета.

По умолчанию в пустом отчете нам доступен один бэнд Данные. Давайте добавим на него некоторые поля из таблицы customer: customer.Company, customer.Addr1, customer.Phone, customer.Contact. Разместим эти поля так, чтобы получилась некая карточка фирмы:

Сделайте правый клик по заголовку бэнда Данные:

 

И выберите пункт «Добавить детальный бэнд Данные». Нажмите на ссылку Configure bands…:

И добавьте заголовочный бэнд для бэнда Data2. Для этого выберите мышью бэнд Data2 и нажмите кнопку Add. В выпадающем списке выберите Header.

После этого можно добавить поля из таблицы orders1 на детальный бэнд «Данные»: orders1.OrderNo, orders1.SaleDate, orders1.AmountPaid. При этом заголовки колонок добавятся автоматически. Отформатируем заголовки, и наш шаблон почти готов:

Сделайте двойной клик по заголовку бэнда «Данные»:

Выбираем таблицу customer в качестве источника данных. Теперь проделаем тоже самое для детального бэнда «Данные»:

Теперь наш отчет готов к запуску. Посмотрим, что получилось:

20 ноября 2024

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

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

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

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

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

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