Создание отчёта на основе запроса

Материал из Lexema.ru
Перейти к: навигация, поиск

Отчёт является особой формой представления данных документа, предназначенной преимущественно для их вывода на печать или экспорта во внешний файл в формате XLS, PDF и т.п. Механизм построения отчёта на основе запроса базируется на соответствующей форме, созданной на этом запросе.

Создание запроса и формы на его основе

Процесс создания формы на основе запроса подробно описан в отдельной статье. Запрос, на котором был построена форма и будет построен отчёт, выглядит следующим образом:

QueryParams.png

QueryText.png

Конструирование отчёта

Запуск приложения для конструирования отчётов

Для создания отчёта требуется программа ReportDesigner (дизайнер отчётов) (скачать), запуск которой требует наличие на компьютере установленной библиотеки MS .NET Framework 3.5. Программа ReportDesigner не требует установки, необходимо просто скачать архив, распаковать его и запустить файл L8.Modeller.ReportDesigner.App.exe. Настройка параметров подключения дизайнера отчётов описана в следующем подразделе.

Настройка подключения к БД

Конфигурационный файл дизайнера отчётов называется L8.Modeller.ReportDesigner.App.exe.config и расположен в одной папке с исполняемым файлом. Данный файл имеет формат XML. Как правило, прикладному разработчику необходимо настраивать только параметры подключения к БД. Эти настройки содержаться в разделе <connectionStrings>, например:

...
  <connectionStrings>
    <add name="DataConnection" connectionString="Data Source=192.168.0.2\SQL;Persist Security Info=True;Initial Catalog=L8_TestData;User ID=sa;Password=top_secret;" />
    <add name="AppConnection" connectionString="Data Source=192.168.0.2\SQL;Persist Security Info=True;Initial Catalog=L8;User ID=sa;Password=top_secret;" />
  </connectionStrings>
...

Описание параметров настроек:

  • DataConnection - параметры подключения к базе с пользовательскими данными (используется для предпросмотра отчётов)
  • AppConnection - параметры подключения к БД бизнес-логики (используется для хранения отчёта, получения моделей и запросов)
  • Data Source - адрес сервера и имя экземпляра сервера СУБД
  • Initial Catalog - имя БД
  • User ID - имя учётной записи пользователя СУБД
  • Password - пароль учётной записи

После изменения настроек необходимо перезапустить дизайнер отчётов.

Создание отчёта

Запустите дизайнер отчётов. Нажмите кнопку "Новый отчёт" на панели инструментов.

ReportDesignerToolbar.PNG

Создание областей отчёта

Пространство отчёта состоит из областей (полос) и может включать следующие элементы:

  • верхнее поле
  • заголовок отчёта
  • верхний колонтитул
  • заголовок группы
  • детализация
  • примечание группы
  • примечание отчёта
  • нижний колонтитул
  • нижняя граница

С помощью контекстного меню создайте полосы "Заголовок отчёта" и "Детализация". Примечание: контекстное меню элемента открывается при нажатии на него правой кнопкой мыши.

AddLine.png

Настройка содержимого областей

На панели инструментов слева выберите элемент "Текст" (нажмите на него левой кнопкой мыши).

SetText.PNG

Два раза кликните мышкой на надпись label - появится возможность скорректировать текст в заголовке запроса. Для изменения размера и других параметров шрифта в окне свойств (слева внизу) в категории "Вид" раскройте группу "Шрифт", установите размер равным 16.

SetTextProperties.PNG

Привязка источника данных к запросу

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

SetDataSourceButton.PNG

В открывшемся диалоговом окне настроек источника данных в списке "DataSourceMode" (режим источника данных) выберите пункт "ModelDocument", укажите пункт "DataSource" и выберите из списка требуемый запрос (примечание: этот список содержит те же самые запросы, что и список запросов в Дизайнере приложения Lexema - категория "Модели", пункт "Запросы"). Нажмите кнопку "ОК".

DataSourceProp.png

В следующем открывшемся окне требуется ввести значения по умолчанию параметров запроса. Это необходимо для загрузки демонстрационных данных в отчёт в процессе его проектирования и настройки и корректного правдоподобного отображения его вида.

ParamEdit.png

Создание таблицы данных

Если параметры запроса были заданы верно, в списке полей (справа сверху) появится источник данных (результаты запроса) со списком его полей. Эти поля используются при формировании основного содержимого (табличной части) отчёта. Для этого перетащите мышкой из окна "Список полей" объект Table на полосу Detail (детализация). Также в этом списке в ветке "Параметры" отображены параметры запроса, которые также могут быть размещены в отчёте. Значок каждого поля или параметра отображает тип данных. Например, поле Cost является числовым, Name - строковым, IsActual - логическим, а ProduceDate - датой:

FieldList.PNG

В области отчёта появятся заголовки полей результатов запроса. С помощью мышки уменьшите высоту полосы Detail до границ строки таблицы - это улучшит внешний вид таблицы с данными в режиме просмотра отчёта. В противном случае при просмотре отчёта между строками детализации будет лишнее пустое пространство.

TableSelect.png

Создание "шапки" таблицы

Для понимания структуры данных таблицы необходимо создать заголовок таблицы - "шапку". Её необходимо разместить в области "Заголовок отчёта", т.к. если её разместить в области "Детализация" она будет продублирована при отображении отчёта. Найдите элемент "Таблица" на палитре компонентов и перетащите её в нужную область отчёта:

TableInPallete.png

В результате будет создана таблица, содержащая три колонки. Если количество столбцов в таблице данных больше, необходимо добавить новые ячейки. Для этого нажмите правой кнопкой мыши на таблице, в контекстном меню выберите пункт "Добавить" - "Ячейка":

AddCellInReportTable.png

Для изменения размеров ячеек необходимо выделить её и перетащить мышью боковой маркер влево или вправо:

ResizeCell.png

Для перехода в режим редактирования текста в колонке необходимо кликнуть мышкой по ней два раза.

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

Настройка границ таблицы

По умолчанию в таблице не отображаются границы. Для изменения параметров границ наведите указатель мыши на таблицу - появится значок "перекрестья" слева вверху, нажмите на него для выделения всей таблицы. Затем в окне свойств (справа внизу) для пункта "Границы" выберите из выпадающего списка кнопку "Все":

SetBorders.png

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

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

Предварительный просмотр отчёта

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

ApplyParams.PNG

Отчёт в режиме предварительного просмотра содержит результаты запроса, выполненного с заданными значениями параметров:

PreviewReport.PNG

Вернитесь в режим "Дизайнер отчёта" путём перехода на соответствующую вкладку. Сохраните отчёт.

Сохранение отчёта

Нажмите кнопку "Сохранить" на панели инструментов. Задайте наименование отчёта. Примечание: отчёты хранятся в базе данных.

SaveReport.png

Отображение отформатированного текста

Для отображения отформатированного текста используется контрол HtmlText

HtmlText.png

После добавления контрола на форму необходимо настроить привязку к данным. Откройте окно свойств (правой кнопкой мыши по контролу -> свойтсва). Разверните свойство "Привязка к данным", затем "Html". В свойстве "Поле данных" выберите нужное поле

HtmlTextBinding.png

Теперь моно посмотреть результат, нажав на просмотр печати.

Если вам надо убрать форматирование текста, то используйте свойство HtmlFormatting со значением false.

HtmlTextHtmlFormatting.png

Привязка отчёта к форме

Как правило, открытие отчёта производиться из экранной формы или реестра при нажатии на кнопку на панели инструментов или на самой форме.

Откройте для редактирования аналитическую форму на основе запроса, к которому был также привязан отчёт. Если кнопка "ReportToolbarItem" не существует, создайте её с помощью пункта "Добавить компонент" контекстного меню элемента Toolbar (панель инструментов).

AddReportMenu.png

Если требуется отображать несколько отчётов, можно создать подменю: Для этого необходимо выбрать пункт "Добавить компонент" - ToolbarItem в контекстном меню элемента ReportToolbarItem:

AddMenuPoint.png

Установите значение свойства "caption" созданного элемента меню "ToolbarItem":

SetMenuCaption.PNG

Свойство caption может быть задано также у кнопки ReportToolbarItem.

Создание скрипта открытия отчёта

Выберите кнопку, при нажатии на которую должен открываться отчёт (ReportToolbarItem или ToolbarItem). Перейдите на вкладку "События", создайте обработчик события - выберите в столбце "Наименование" пункт "ItemClick", нажмите кнопку "Редактор" для перехода в окно для ввода исходного кода скрипта обработчика.

Отчёт может быть отображён в двух режимах:

  • в режиме предпросмотра DevExpress - это позволяет экспортировать результаты в формате DOC, XLS и т.п., а также использовать другие возможности отчётной системы DevExpress. Однако, при нажатии на кнопку "Печать" будет отображён интерфейс предпросмотра браузера
  • в режиме предпросмотра браузера - данный режим упрощает печать документа, но не позволяет использовать возможности DevExpress

Для открытия отчёта в режиме необходимо использовать следующий код:

// считывание значений параметров из полей формы
var costFromParam = L8.View.NumberInput1.value,
    costToParam = L8.View.NumberInput2.value,
    isActualParam = L8.View.CheckBox1.value;

// открытие отчёта    
L8.System.openReport({name:'TestModelReport', 
    parameters:[{costFrom: costFromParam, costTo: costToParam, isActual: isActualParam}]});

Для открытия отчёта без предпросмотра (точнее, только с предпросмотром браузера) необходимо в приведённом выше коде заменить метод openReport на printWithoutPreview. Всё остальное остаётся без изменений.

Проверка работоспособности отчёта

Откройте тестовую аналитическую форму на запросе, в которую была добавлена кнопка для открытия отчёта. Введите значения параметров, нажмите кнопку "Отчёт". Если был использован обычный режим с предпросмотром, отчёт откроется в отдельной вкладке:

OpenReport.png

В случае открытия отчёта без предпросмотра он откроется в той же вкладке:

PrintReportWithoutPreview.png