ГЕНЕРАЦИЯ ДЕТАЛИЗИРОВАННЫХ ОТЧЕТОВ С ИСПОЛЬЗОВАНИЕМ ЭЛЕМЕНТА УПРАВЛЕНИЯ REPORTVIEWER

Аннотация: Формализована методика построения динамических детализированных отчетов в среде .NET с использованием методов SQL Server Reporting Services и элемента управления ReportViewer.

Ключевые слова: Reporting Services, детализированный отчет, элемент управления ReportViewer

Введение. Стандартной задачей, решаемой в рамках автоматизации информационных систем, использующих СУБД является представление табличных данных в виде отчетов. При разработке программного обеспечения возникает такая ситуация, когда в отчет должна включаться информация, получаемая из нескольких SQL-запросов или представлений БД. При этом выбор данных для отчета и его формирование представляется затруднительным поскольку данные в БД хранятся в нормализованном виде и для представления их в понятной для пользователя форме необходимо получать информацию из большого количества связанных таблиц.

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

Учитывая вышесказанное, изучение и применение методов SQL Server Reporting Services в рамках данной задачи будут актуальными.

Методика формирования детализированного отчета. Целью данной работы является формализация методики использования элемента управления ReportViewer в рамках задачи генерации детализированных отчетов.

Схема формирования отчета выглядит следующим образом (рис. 1).

Элемент управления ReportViewer – компонент межплатформенной среды программирования .NET. в среду разработки MS Visual Studio встроен конструктор отчетов для данного компонента, которые могут содержать табличные, агрегатные и многомерные данные .

ReportViewer – это свободно распространяемый элемент управления данными, который следует использовать, если необходимо чтобы приложение имело такие возможности как: ‒ обработка отчетов в клиентском приложении; ‒ привязка данных к таблицам данных; ‒ возможности времени выполнения, такие как навигация по страницам, печать, поиск и форматы экспорта.

Чтобы создать отчет, отображаемый в элементе управления ReportViewer, необходимо добавить в проект шаблон Отчет, который представляет собой файл определения отчета клиента (RDLC). После чего откроется мастер отчетов в рабочей области Visual Studio.

Работа мастера отчетов сводится к выполнению следующих основных шагов: ‒ определение используемого набора данных на основе источника данных; ‒ размещение полей по группам строк, группам столбца и строкам детализации в области данных; ‒ создание макета отчета; ‒ задание стиля отчета.

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

Существуют две версии элемента управления ReportViewer: ‒ серверный веб-элемент управления ReportViewer – используется для размещения отчетов в проектах ASP.NET AJAX; ‒ элемент управления Windows Forms ReportViewer используется для размещения отчетов в проектах приложений Windows.

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

В режиме локальной обработки обработка отчетов выполняется элементом управления ReportViewer в клиентском приложении локальным процессом с использованием данных, передаваемых приложением. Отчет создается на основе шаблона проекта отчета в среде Visual Studio.

В режиме удаленной обработки обработка отчетов выполняется сервером отчетов Reporting Services SQL Server. Все этапы обработки, от получения данных до обработки отчета, выполняются на сервере отчетов. Например, в сводном отчете содержится статистика числа срабатываний пожарной сигнализации по различным административно-территориальным единицам Ростовской области. Нажав на нужную единицу открывается детализированный отчет с информацией о срабатывании (когда, какой объект и т.д.), что схематично изображено на рисунке 2.

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

Определим последовательность шагов для формирования детализированного отчета: 1) Определение шаблона сводного отчета – на данном шаге необходимо выбрать источник данных на странице Свойства набора данных, а также выбрать отображаемые на отчете поля. 2) Определение шаблона детализированного отчета – на данном шаге необходимо выбрать источник данных на странице Свойства набора данных, а также выбрать отображаемые на отчете поля.

В результате выполнения шагов 1 и 2 создается RDLC-файл, который открывается в конструкторе отчетов и отображает спроектированный табликс. 3) Выбор связанных полей – на данном шаге в открытый RDLC-файл нужно добавить параметр, в соответствии с которым будет происходить выбор данных для детализации. 4) Добавление операции детализации к сводному отчету – здесь необходимо открыть сводный отчет, выбрать поле, по которому будет осуществляться связь, перейти в свойства данного поля. Затем на вкладке Действие выбрать параметр Переход к отчету и ввести имя детализированного отчета, а также добавить Имя и Значение в разделе Использовать эти параметры при выполнении отчета. 5) Создание фильтра данных – на этом шаге необходимо создать функцию, выбирающую фильтрованные из таблицы и добавить обработчик событий, получающий значения параметров и связывающий сводный и детализированный отчеты. Для выбора фильтрованных данных нужно сформировать запрос выбирающий данные из БД в зависимости от значения параметра, выбранного в сводном отчете. Связь сводного и детализированного отчетов настраивается в обработчике события Drillthrough, где выбирается ссылка на объект детализированного отчета из параметра DrillthroughEventArgs, получается список параметров детализированного отчета, вызывается функция для выбора фильтрованных данных и выбранные данные привязываются к существующему источнику данных отчета. 6) Построение и запуск приложения (просмотр детализированного отчета) – после запуска приложения в элементе управления ReportViewer отобразится сводный отчет. Нажав на значение поля в одной из строк будет показан детализированный отчет с соответствующими отфильтрованными данными.

Щелкнув значок Вернуться к родительскому отчету на панели инструментов элемента управления ReportViewer осуществится переход к сводному отчету.

На рисунке 3 изображена обобщенная схема обработки отчетов.

Пример отчета. На рисунке 4 представлен «Мастер отчетов» геоинформационного мониторингового комплекса «Сполох». Как видно из рисунка, в мастере отчетов можно задать параметры отчета, такие как абонентский комплект, объект мониторинга, район, заказчик, мониторинговая компания, обслуживающая компания, классификатор и период для формирования, а также выбрать вид отчета.

Состояние объектов, представленное в сводном отчете на рисунке 5, демонстрирует количество объектов, находящихся в одном из состояний: «неисправно», «нет на связи», «норма» и «тревога при пожаре».

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

Итоговый вид детализированного отчета, отображаемый в элементе управления ReportViewer, можно экспортировать в различные форматы документов . Форматы представления отчетов в Reporting Services сохраняют макет отчета в неизменном виде. Элемент управления ReportViewer позволяет экспортировать отчет в такие форматы как: ‒ графические образы TIFF; ‒ документы PDF; ‒ книги MS Office Excel; ‒ документы MS Office Word.