Сложный отчёт с несколькими матрицами в FastReport .NET

16.06.2021

Сегодня мы рассмотрим непростой отчёт с бэнд-ориентированным подходом, который обычно используется в FastReport. Например, отчет по продажам с разбивкой по годам, кварталам и месяцам, в котором требуется вывести три таблицы с данными, но они должны быть расположены не сверху вниз - а слева направо. К счастью, мы можем сделать такой отчёт в FastReport .NET, используя несколько объектов “Матрица”.

Итак, в первую очередь рассмотрим данные. Они сгенерированы случайным образом, по определённому шаблону:

Шаблон данных

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

Мы будем использовать объект Матрица для вывода данных. Перейдем же к его настройкам:

Настройка матрицы

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

Итак, мы указали, какие данные будут использованы в матрице. Включим границы для всех ячеек, и настроим параметры страницы. А чтобы наш отчёт находился на одном листе - включим “неограниченная высота” и “неограниченная ширина”. После этого подготовим отчёт, который будет иметь вид:

Сформированный отчёт

Данные продолжаются вправо для 2018 и 2019 годов.

Итак, в первую очередь заметим, что для всех столбцов автоматически были добавлены итоги. Если они не нужны, то их можно удалить, что мы и сделаем. Чтобы вместо пустых ячеек отображались нули - нужно задать свойство NullValue у ячейки. По итогу в ней должен появиться 0. Кроме того, отключим у таблицы авторазмер и настроим результат:

Сформированный отчёт

Наша задача - сделать статистику с помощью нескольких матриц:

1) По годам;
2) По кварталам;
3) По месяцам.

Копируем матрицу и располагаем две её копии рядом с оригиналом. Включаем “дополнительное место в дизайнере”, чтобы всё поместилось. Заметьте, что при копировании матрицы она отвязывается от данных и нужно будет выбрать требуемую таблицу данных в свойстве DataSource.

Удалим ненужные поля из матриц и расположим их поближе друг к другу:

Настройка матрицы

Попробуем подготовить такой отчёт:

Примерный вид будущего отчёта

Как вы видите в отчёте есть несколько проблем:

1) Из-за разной высоты заголовков матрицы выводятся неодинаковым образом;
2) Страны и виды фруктов повторяются во второй и третьей матрицах.

Увеличим высоту ряда “Год” в первой и второй матрицах. Чтобы выбрать ряд, вы можете навести мышь на левую часть матрицы. Когда мышь будет над одним из рядов, она превратится в чёрную стрелку вправо. Кроме этого, вы можете выбрать ряд в дереве отчёта:

Дерево отчёта

И теперь все заголовки одной и той же высоты:

Настройка заголовков

Матрицы в FastReport позволяют “скрыть” колонку или ряд, уменьшив их размер до нуля. В нашем случае нам нужно скрыть “название стран” с “фруктами” во второй и третьей матрицах. Выберем колонку, и уменьшим её свойство Width (ширина) до нуля:

Скрываем колонку из матрицы

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

Готовый шаблон отчёта

Заметьте, это всё ещё три отдельные матрицы, а не одна. Но благодаря тому, что у них идентичная высота заголовков и ячеек, а также один и тот же набор данных - они функционируют как одна сложная матрица.

Итак, взглянем на отчёт теперь:

Итоговый отчёт

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

И, напоследок, сделаем нашу матрицу немного красивее:

Последние изменения шаблона

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

Year [fruit_import_database.year]

Правильно же делать это таким образом:

"Year " + [fruit_import_database.year]
2 сентября 2024

Обзор облачного решения для создания и управления отчетами

МоиОтчеты Облако — это мощное облачное решение для создания и управления отчетами, обеспечивающее широкий спектр возможностей, от создания документов в различных форматах до интеграции с корпоративными системами.
12 августа 2024

Как собрать и установить плагин Postgres в FastReport .NET

В этой статье описывается подключение к базе посредством плагина FastReport .NET для дизайнера отчетов из Visual Studio через NuGet-сервер.
8 августа 2024

Как установить FastReport .NET и его компоненты в Windows

Пошаговая инструкция по онлайн и ручной установке через регистрационный код FastReport .NET и его компонентов в Windows.