У многих разработчиков отчетов бывали ситуации, когда в отчет нужно было добавить страницу, которая уже была реализована в другом отчете. И вам приходилось дорабатывать существующий отчет - добавлять новую страницу, источники данных. Не все знают, что можно просто объединить отчеты во время их отображения.
С проблемой объединения отчетов столкнулся и пользователь генератора отчетов 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.
К счастью, пользователь нашел штатный способ объединения отчетов. Пользователям 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). Этот параметр говорит о том, что при построении нужно добавлять страницы к существующим, а не очищать перед добавлением. А теперь, запустим приложение и посмотрим на отчет:
Как мы видим – все три отчета выведены друг за другом. Более, того, при таком способе объединения отчетов нумерация страниц сквозная. Например, в последнем отчете выводится номер страницы 4 внизу:
Таким образом, вы можете объединять отчеты незаметно для пользователя. В зависимости от требуемого контента можно создавать разные сборки из отчетов. Получается нет необходимости создавать большие и сложные многостраничные отчеты. Можно поручить разным людям создание нескольких простых отчетов и в конце, при отображении, объединить их. Да, при этом у вас будет несколько шаблонов, но файл подготовленного отчета в формате fpx будет один.