Как объединить несколько отчетов в один

13.07.2020

У многих разработчиков отчетов бывали ситуации, когда в отчет нужно было добавить страницу, которая уже была реализована в другом отчете. И вам приходилось дорабатывать существующий отчет - добавлять новую страницу, источники данных. Не все знают, что можно просто объединить отчеты во время их отображения.

С проблемой объединения отчетов столкнулся и пользователь генератора отчетов Stimulsoft:

https://stackoverflow.com/questions/43569668/stimulsoft-view-multiple-reports-inside-stiviewer

I am using Stimulsoft libraries to create reports (StiReport control) and then showing it inside a StiViewer control. the problem is when i assign multiple reports to the viewer, it does not refresh or display the contents but it works just fine if i only set 1 report to the viewer.

User issue

К счастью, пользователь нашел штатный способ объединения отчетов. Пользователям FastReport.net наверняка было бы интересно узнать, как сделать это в своем генераторе отчетов.

Давайте рассмотрим код:

1
2
3
4
5
6
7
8
9
10
11
Report report = new Report();
 DataSet data = new DataSet();
 data.ReadXml("K:/My documents/nwind.xml");
 report.RegisterData(data);
 report.Load("K:/My documents/Master-Detail.frx");
 report.Prepare();
 report.Load("K:/My documents/Highlight.frx");
 report.Prepare(true);
 report.Load("K:/My documents/Barcode.frx");
 report.Prepare(true);
 report.ShowPrepared();

Как видите, мы последовательно загружаем три разных отчета в один и тот же объект отчета.

При этом, после каждой загрузки отчета, нужно выполнить построение отчета методом Prepare(). Но, как вы заметили, для второго и третьего отчета мы использовали этот метод с параметром Prepare(true). Этот параметр говорит о том, что при построении нужно добавлять страницы к существующим, а не очищать перед добавлением. А теперь, запустим приложение и посмотрим на отчет:Combined reports

Как мы видим – все три отчета выведены друг за другом. Более, того, при таком способе объединения отчетов нумерация страниц сквозная. Например, в последнем отчете выводится номер страницы 4 внизу:

Numbering range works for combined reports

 

Таким образом, вы можете объединять отчеты незаметно для пользователя. В зависимости от требуемого контента можно создавать разные сборки из отчетов. Получается нет необходимости создавать большие и сложные многостраничные отчеты. Можно поручить разным людям создание нескольких простых отчетов и в конце, при отображении, объединить их. Да, при этом у вас будет несколько шаблонов, но файл подготовленного отчета в формате fpx будет один.

.NET FastReport Отчет .NET FastReport Отчет
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»