Разработка Windows-приложений на языке C# 2005

Интеграция отчетов в Windows-приложения

Показывать лекцию целиком

Цель работы: Освоить технологию интегрирования и просмотра отчетов из Windows -приложений, а также настройки отчетов на этапе выполнения с использованием развитой объектной модели.

Общие сведения

Планирование приложения. Интеграция отчетов представляет собой простой способ добавления значимости приложению, она может стать важной услугой, предоставляемой вашим приложением. Прежде чем приступить к внедрению технологии .NET Crystal Reports в среду разрабатываемого Windows -приложения, нужно четко спланировать свои действия.

Прежде всего, необходимо располагать отчетом (или набором отчетов), с которым приложение будет работать. Необходимо составить план, как эти отчеты будут доставляться пользователям и в каких формах они должны быть представлены. В рамках среды Crystal Reports.NET реализован модуль просмотра с развитыми функциональными возможностями, который может быть вставлен в Windows -форму и использоваться для просмотра отчетов. Для каждого модуля просмотра разработана подробная объектная модель, позволяющая задавать источники отчетов, внешний вид самих модулей просмотра и устанавливать действия в ответ на различные события. Большинство приложений может использовать единственную Windows -форму, содержащую модуль просмотра Crystal Report Viewer, и просто передавать ему такие свойства, как источник данных для отчета и параметры настройки модуля просмотра. Подобная возможность позволяет творчески подходить к решению задачи выбора параметров настройки, которые в полной мере учитывают требования конечных пользователей. Параметры настройки модуля просмотра и предпочтения пользователя (или групп пользователей) можно хранить в специальной таблице или в XML -файле и во время просмотра отчета просто их активизировать.

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

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

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

В лабораторной работе будет использоваться одна форма для демонстрации различных особенностей интеграции отчета с Winsdows -приложением.

Выбор корректной объектной модели. Для случая Windows -приложений на выбор предоставляются две различные объектные модели, в зависимости от конкретных потребностей. Первая из них, объектная модель модуля просмотра Windows -форм Crystal Reports Windows Forms Viewer (CrystalDecisions.Windows.Forms), содержит все функциональные средства, необходимые для просмотра отчета в модуле Crystal Reports Windows Forms Viewer. В их число входят средства, позволяющие устанавливать регистрационную информацию базы данных, передавать параметры и формулы выбора записей, управлять внешним видом модуля просмотра и осуществлять просмотр отчетов, включая отчеты, доступные через Web -службы формирования XML -отчетов ( XML Report Web Services ).

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

Для достижения полного контроля над отчетом и содержащимися в нем объектами и средствами следует отдать предпочтение объектной модели машины Crystal Reports Engine (CrystalDecisions.CrystalReports.Engine). Использование Crystal Reports Engine позволяет должным образом изменять даже наименьшие элементы отчета.

Важно отметить, что объектная модель машины Crystal Reports Engine не является автономной - она не имеет встроенных средств просмотра отчетов, и для собственно просмотра полагается на услуги модуля Crystal Reports Windows Forms Viewer.

Компания Crystal Decisions рекомендует использовать эти две объектные модели так, чтобы области их действия не перекрывались, и не применять свойства и методы обеих моделей одновременно. Например, если в рамках отчета устанавливается значение некоторого поля параметров через объектную модель Crystal Reports Engine, то не следует пытаться присваивать значение другому полю параметров с использованием объектной модели Crystal Reports Windows Forms Viewer. Необходимо выбирать одну объектную модель, учитывающую все требования, и придерживаться этой модели на протяжении всего процесса разработки отчета.

Пространство имен CrystalDecisions.Windows.Forms состоит из некоторого числа классов, которые обеспечивают реализацию функциональных возможностей, специфических для просмотра отчетов.

Для добавления нового отчета в приложение необходимо выбрать из меню команду Project | Add New Item (Проект | Добавить НОВЫЙ элемент) и Crystal Report из списка доступных шаблонов (рисунок 13.1).

(рис 13.1) Окно добавления в проект отчета

Введите CryReportEmployee.rpt в поле имени и щелкните кнопкой мыши на Add (Добавить), чтобы включить новый отчет в проектируемое приложение. Создается специальная вкладка для этого отчета, которая во время построения отчета позволяет обращаться к интегрированному конструктору отчетов Project Designer и открывается окно галереи отчетов Crystal Report Gallery (рисунок 13.2).

В данном окне будем использовать помощник построения отчетов Reports Wizard (радиокнопка Using the Report Wizard в группе переключателей Create a New Crystal Report Document -Создать новый документ Crystal Reports ). Из доступных экспертов выберем Standard (Стандартный отчет), который является наиболее общим. Данный эксперт позволяет строить колоночные отчеты, которые обладают такими функциональными возможностями, как группирование, сортировка, суммирование. Этот эксперт позволяет включать в отчет диаграммы, использовать заданное множество предопределенных стилей, фильтров для записей, он содержит такие современные аналитические средства, как TopN, BottomN (например, отчеты типа "Первые 10" или "Последние 10").

(рис 13.2) Диалоговое окно галереи Crystal Report Gallery

Для вызова эксперта стандартных отчетов необходимо выбрать в списке Choose an Expert (Выберите эксперт) элемент Standard (Стандартный отчет) в окне Crystal Report Gallery (рисунок 13.2) и щелкнуть на кнопке "ОК".

Далее открывается окно Data помощника Standard Report Creation Wizard. (рисунок 13.3)

(рис 13.3) Диалоговое окно эксперта стандартных отчетов

Выберите таблицы Empoyee и JobRole (рисунок 13.4).

(рис 13.4) Диалоговое окно эксперта стандартных отчетов с добавленными таблицами

При вставке в отчет несколько таблиц, в окне Standard Report Creation Wizard появляется вкладка Link (Связи), которая позволяет задать (просмотреть) способ объединения этих таблиц или представлений (рисунок 13.5).

(рис 13.5) Вкладка Link диалогового окна помощника стандартных отчетов

Далее необходимо выбрать в таблицах поля, которые будут отображаться в создаваемом отчете. Необходимо перейдите на вкладку Fields (Поля) и с помощью кнопки "Далее" сформировать в списке Fields to Display список полей, включаемых в отчет (рисунок 13.6). Для этого нужно выбрать то или иное поле, выделив его в левом списке, а затем при помощи кнопки со стрелками переместить его в список, находящийся справа.

Поле отображается в списке с использованием нотации TableName.FieldName (ИмяТаблицы.ИмяПоля), и если требуется просмотреть содержимое или тип некоторого поля, можно воспользоваться кнопкой Browse Data (Просмотр) для вывода содержимого этого поля. Кроме того, доступна также кнопка Find Field (Найти), с помощью которой можно найти заданное поле в длинных списках полей.

(рис 13.6) Выбранные поля для включения в отчет

В разрабатываемый в настоящий момент отчет мы помещаем следующие поля.

  • EmployeeSurName (фамилия сотрудника);
  • EmployeeName (имя сотрудника);
  • EmployeePatronymic (отчество сотрудника);
  • EmployeeRoleName (должность сотрудника);
  • EmployeeStatus (статус сотрудника);
  • EmployeeAccess (уровень доступа сотрудника);
  • NetName (сетевое имя);
  • Birthday (дата рождения);
  • FirstDate (дата приема на работу).
  • Вместе с каждым полем в отчет добавляется и соответствующий заголовок, который помещается в заголовок страницы. В текстовом поле, помеченном как Column Heading (Заголовок столбца), можно изменить заголовок, установленный по умолчанию (обычно это имя поля), либо же можно отредактировать все заголовки позже, в окне конструктора отчетов.

    Последний шаг помощника Standard Report Creation Wizard предполагает выбор конкретного стиля разрабатываемого отчета на вкладке Report Style (рисунок 13.7).

    (рис 13.7) Диалоговое окно Report Style помощника Standard Report Creation Wizard со списком доступных стилей отчета

    Завершающий шаг работы в эксперте Standard Expert заключается в выполнении щелчка на кнопке Готово, в результате чего проектируемый отчет открывается в конструкторе Report Designer, который является частью интегрированной среды разработки Visual Studio .NET (рисунок 13.8).

    (рис 13.8) Окно конструктора Report Designer

    Полученный отчет необходимо сохранить, щелкнув кнопкой мыши на пиктограмме Save (Сохранить) или Save All (Сохранить все) в среде Visual Studio .NET.

    Отредактируйте шапку отчета в соответствии с рисунком 13.9.

    (рис 13.9) Окно конструктора с отредактированным отчетом

    Интеграция отчета и Windows-приложения

    Создайте в проекте новую форму и дайте ей имя FormReport. Свойству Text данной формы присвойте значение "Отчет". Для предварительного просмотра построенного отчета к форме потребуется добавить модуль просмотра Crystal Reports Viewer, в котором в качестве источника отчета ( Report Source ) следует указать проектируемый отчет.

    Откройте файл формы FormReport.cs в режиме конструктора. Выберите форму и назначьте свойству Title (Заголовок) в окне свойств значение "Отчет".

    Перетащите на форму элемент CrystalReportViewer из раздела CrystalReport окна инструментов Toolbox - (рисунок 13.10).

    (рис 13.10) Окно Toolbox c элементом CrystalReportViewer

    Измените значение свойства привязки Dock (Стыковка) на Fill (Заполнить), чтобы модуль просмотра отчетов CrystalReportViewer заполнил всю страницу (рисунок 13.11). Можно также определить поля вокруг пристыкованного модуля просмотра, соответствующим образом установив набор свойств в группе DockPadding (Заполнение стыковки), в результате чего вокруг модуля просмотра появится заданное обрамление в виде пустого пространства.

    Привязка созданного отчета к модулю просмотра отчетов осуществляется путем добавления к форме FormReport.cs компонента ReportDocument. Встраиваемые в приложение отчеты могут быть нетипизированные и строго типизированные.

    (рис 13.12) Внешний вид формы с модулем просмотра отчетов(рис 13.11) Окно Toolbox c элементом ReportDocument

    В результате этих действий будет выведено диалоговое окно (рисунок 13.13), с выпадающим списком всех доступных отчетов, которые были добавлены в приложение. Необходимо выбрать отчет CryRepEmployee, что приведет к созданию документа строго типизированного отчета.

    (рис 13.13) Создание строго типизированного отчета с использованием окна выбора вида компонента ReportDocument

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

    Теперь необходимо вызвать отчет при загрузке формы FormReport.

    Для этого необходимо в классе FormReport объявить и создать объекты классов DataSetEmployee, EmployeeTableAdapter, JobTitleTableAdapter и создать метод EmployeeFill для заполнения данными объект DataSet из базы данных (см. лабораторную работу 9).

    Далее необходимо при загрузке формы FormReport заполнить данными DataSet, задать источник данных для объекта crystalReportEmployee1 класса ReportDocument и источник отчета для объекта crystalReportViewer1 класса CrystalReportViewer. Код метода FormReport_Load приведен ниже.

    private void FormReport_Load(object sender, EventArgs e)
    {
        EmployeeFill();
        crystalReportEmployee1.SetDataSource(dsEmployee);
        crystalReportViewer1.Refresh();
        crystalReportViewer1.ReportSource = crystalReportEmployee1;
    }

    После запуска созданного приложения на выполнение и загрузки формы модуль просмотра Crystal Report Viewer формирует и отображает отчет, указанный в свойстве ReportSource.

    Для подключения формы FormReport к приложению в меню формы FormEmployee необходимо к пункту меню "Отчет" добавить подпункт "По всем сотрудникам", которому присваивается имя reportToolStripMenuItem2 (рисунок 13.14).

    (рис 13.14) Добавление подпункта меню "По всем сотрудникам" формы FormEmployee

    В текст программы класса FormEmployee.cs необходимо добавить код обработчика события, возникающего при выборе подпункта меню "По всем сотрудникам". По данному пункту меню должен быть создан объект класса FormReport и выведено окно на экран дисплея.

    После трансляции и запуска программы на выполнение при выборе пункта меню Отчет | По всем сотрудникам будет сформирован отчет "Список сотрудников" аналогичный, приведенному на рисунке 13.15.

    (рис 13.15) Отчет "Список сотрудников"

    Задание на лабораторную работу

  • Изучить теоретический материал.
  • Разработать отчет и интегрировать его с приложением.
  • Протестировать работу приложения с отчетом.
  • Продемонстрировать работу приложения преподавателю.
  • Вернуться к учебному плану