C #. Пример создания отчета. Report Viewer

  1. содержание
  2. 7.1. Панель инструментов ToolBox
  3. 7.3.2.1. Настройка заголовков
  4. 8.1. Добавление формы к проекту

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

содержание

Условие задачи

Задано базу данных, которая предназначена для использования под управлением СУБД Microsoft SQL Server. В базе данных реализованы такие таблицы с именами Student и Session. Таблицы связаны между собой некоторым полем.

Структура таблицы Student.

Структура таблицы Student

Структура таблицы Session.

Структура таблицы Session

Как видно из структуры таблиц, таблицы имеют связь с полем ID_Book.

Разработать приложение, демонстрирует использование отчетов. Сформировать отчет, содержащий следующую информацию:

  • Номер зачетной (таблица Student)
  • Фамилия и имя студента (таблица Student)
  • оценка по математике (таблица Session)
  • оценка по информатике (таблица Session)
  • оценка по философии (таблица Session)
  • средняя оценка (расчетное поле).

Отчет должен выводиться в отдельной форме.

рассуждения

Чтобы создать отчет, нужно создать представление (Views). Представление - это обычный запрос к базе данных на языке SQL. В представлении формируется результирующая таблица с выбранными данными. На основе этого представления будет создан отчет.

выполнение

1. Запустить на выполнение систему Microsoft Visual Studio. Создать проект по шаблону Windows Forms Application

После загрузки Microsoft Visual Studio нужно создать новый проект. Детальный пример создания и сохранения нового проекта по шаблону Windows Forms Application описывается в статье:

Выбрать папку для проекта. Например

C: \ Programs \ C_Sharp \ TrainReports01

2. Создать базу данных "Education.mdf" или загрузить готовый файл базы данных

В нашем случае загружаем архив с готовым (ранее подготовленным) файлом базы данных по этой ссылке .

Архив содержит файлы Education.mdf и Education.ldf. Рекомендуется распаковать эти файлы в папку, в которой будет размещаться разрабатываемый приложение.

3. Подключение файла базы данных к проекту

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

C: \ Programs \ C_Sharp \ TrainReports01

Чтобы использовать базу данных "Education.mdf" нужно подключить ее к проекту стандартным способом. Для подключения файла базы данных к проекту используется команда "Add Connection ..." из контекстного меню, вызываемого в перечне Data Connections (рисунок 2).
Другой способ - выбрать команду "Connect to Database" (рисунок 1).

Рис. 1. Варианты подключения файла базы данных к проекту

В результате откроется окно мастера, в котором нужно выполнить следующие действия:

  • в окне Add Connection (рисунок 2) выбрать кнопку "Change ..." для поля Data Source;
  • в окне "Choose Data Source" выбрать источник данных (Data Source) - Microsoft SQL Server Database File (рисунок 3);
  • в следующем окне "Add Connection" в поле "Database file name" задать путь к файлу базы данных, как показано на рисунке 4 (кнопка Browse ...).

)

Рис. 2. Окно Add Connection. Выбор источника данных

Выбор источника данных

Рис. 3. Окно Change Data Source с выбранным источником данных Microsoft SQL Server Database File

Если все сделано правильно, то окно "Add Connection" должен принять вид, как показано на рисунке 4. С помощью кнопки "Test Connection" можно протестировать соединение с базой данных.
Чтобы зафиксировать выбор базы данных, нужно выбрать OK.

Рис. 4. Окно Add Connection с выбранным типом источника данных и файл базы данных Education.mdf

4. Окно утилиты Server Explorer

После выполненных действий, окно утилиты Server Explorer примет вид, как показано на рисунке 5. В окне отображается развернутый вид базы данных Education.mdf.

Рис. 5. Окно утилиты Server Explorer с базой данных Education.mdf

База данных содержит следующие составляющие:

  • таблицы Student и Session;
  • диаграмму связей между таблицами Diagram1. Таблицы связаны между собой по полю ID_Book;
  • представления View1, содержащий отображения некоторых полей таблицы а также расчетное поле Average.

5. Разработка главной формы приложения

Согласно условию задачи, отчет должен выводиться в отдельной форме. Поэтому, главная форма приложения выглядит как показано на рисунке 6.

Рис. 6. Главная форма приложения

Как видно из рисунка, форма содержит только один элемент управления типа Button (кнопка) с именем button1. После щелчка на кнопке "Show Report" отображается отчет в другой форме.
Настраиваются такие свойства элементов управления:

  • в элементе управления button1 свойство Text = "Show Button";
  • в элементе управления Form1 (главная форма) свойство Text = "Report Viewer".

6. Подключение файла соответствует отчета, в проект

В системе Microsoft Visual Studio каждому отчету соответствует файл, который имеет расширение * .rdlc. Этот файл содержит данные, которые формируются в отчете.

Для создания файла в Microsoft Visual Studio нужно вызвать команду Add New Item из меню Project (рисунок 7).

Для создания файла в Microsoft Visual Studio нужно вызвать команду Add New Item из меню Project (рисунок 7)

Рис. 7. Команда Add New Item ... из меню Project

В результате откроется окно "Add New Item ...", в котором нужно выбрать шаблон Report (рисунок 8) и задать имя файла отчета Report1.rdlc (по умолчанию).

Рис. 8. Выбор шаблона Report и задания имени для файла отчета Report1.rdlc

После подтверждения выбора (кнопка Add), окно Microsoft Visual Studio будет выглядеть как показано на рисунке 9.

После подтверждения выбора (кнопка Add), окно Microsoft Visual Studio будет выглядеть как показано на рисунке 9

Рис. 9. Окно вкладки, соответствует файла Report1.rdlc

7. Проектирование отчета

Перед проектированием отчета нужно активировать окно файла "Report1.rdlc [Design]".

7.1. Панель инструментов ToolBox

Для проектирования элементов отчета используется панель ToolBox (рисунок 10).

Рис. 10. Панель ToolBox с инструментами, которые необходимы для проектирования отчета

7.2. Элементы управления, предназначенные для формирования отчета

Система Microsoft Visual Studio предлагает ряд элементов управления, которые можно использовать для разработки отчета. С помощью этих элементов управления можно проектировать внешний вид (представление) различных отчетов.

Предлагаются следующие элементы управления:

  • элемент управления типа TextBox. Отражает метки, поля или значения, которые получаются в результате вычислений;
  • элемент управления типа Line. Рисует линию, которая имеет толщину от 1 точки и более;
  • элемент управления типа Table. Этот элемент управления отображает данные в сетке (grid), имеющий фиксированное количество колонок и переменное количество строк;
  • элемент управления типа Matrix. Отражает агрегированные данные в сетке имеет переменное количество колонок и переменное количество строк;
  • элемент управления типа Rectangle. Рисует прямоугольник как контейнер для других элементов отчета;
  • элемент управления типа List. Отражает набор элементов отчета, повторяются для каждой группы или строки данных;
  • элемент управления типа Image. Отображает изображение в виде битовой карты (например, логотип, фото)
  • элемент управления типа Subreport. Отражает связан подотчет в рамках данного отчета;
  • элемент управления типа Chart. Отображает данные в виде диаграмм различных видов;
  • элемент управления типа Gauge. Отражает значение, поле или выражение в виде линейной или радиальной зависимости.

Не вдаваясь в особенности использования каждого параметра для решения нашей задачи нужно использовать элемент управления Table. Этот элемент управления отображает данные в сетке (grid), имеющих фиксированное количество колонок и переменное количество строк.

7.3. Настройка элемента управления типа Table
7.3.1. Настройка источника данных для элемента управления Table

Чтобы разместить элемент управления типа Table на макете отчета, нужно его выделить (мышкой) в панели Toolbox и сделать клик в области отчета. В результате загрузится мастер настройки источника данных.
В первом окне мастера Data Source Configuration Wizard нужно выбрать источник данных Database (рисунок 11).

Рис. 11. Выбор источника данных, с которого приложение будет получать данные для отчета

После выбора "Next>" откроется следующее окно (рисунок 12). В этом окне нужно выбрать модель базы данных Dataset. Выбранная модель базы данных определяет типы данных объектов, используемых приложение. Эта модель будет добавлена ​​к нашему проекту.

Эта модель будет добавлена ​​к нашему проекту

Рис. 12. Выбор модели данных Dataset

После выбора "Next>" откроется следующее окно (рисунок 13). В этом окне нужно выбрать соединение с базой данных, какова файл Education.mdf. Этому соединению соответствует строка Connection String, который формируется системой автоматически.

Рис. 13. Настройка соединения с базой данных. строка ConnectionString

После выбора "Next>" нужно подтвердить копирование файла базы данных в текущий проект (рисунок 14). В результате строка соединения модифицируется. Поскольку база данных Education.mdb уже есть подключена к проекту (см п.3), то рекомендуется выбрать "Нет".

3), то рекомендуется выбрать Нет

Рис. 14. Окно уточнения копирования файла базы данных в текущий проект

В следующем окне (рис 15) предлагается сохранить строку Connection String в конфигурационном файле приложения. Нужно оставить все без изменений и выбрать "Next>".

Рис. 15. Окно с предложением сохранения строки Connection String в конфигурационном файле приложения

Следующим является окно выбора объектов базы данных, которые будут включены в набор данных (рисунок 16). В нашем случае нужно выбрать все элементы просмотра View1, который был сформирован в СУБД Microsoft SQL Server.

После выбора кнопки "Finish" отобразится предварительно открытое окно Dataset Properties с созданным набором данных (рисунок 17). В этом окне отображаются поля представления View1, которые будут отображаться в отчете. Стоит напомнить, что представление View1 был спроектирован средствами СУБД Microsoft SQL Server.

Рис. 17. Окно Dataset Properties с отраженными полями представления View1

По желанию, можно создать еще один источник данных с помощью кнопки New ... (см. Рисунок 17).

После подтверждения на OK, окно файла отчета Report1.rdlc будет выглядеть, как показано на рисунке 18.

Рис. 18. Окно файла отчета Report1.rdlc после размещения и настройки таблицы Table

7.3.2. Настройка столбцов таблицы для отображения в отчете

В элементе управления Table1 существует две области:

  • область Header, которая отражает заголовок каждого столбца таблицы
  • область Data, которая отражает набор данных, выводимых в каждой строке таблицы. Набор данных формируется на основе просмотра View1.
7.3.2.1. Настройка заголовков

Чтобы настроить название каждого столбца нужно сделать двойной клик мышкой в ​​соответствующей ячейке области Header так, как это показано на рисунке 19.

Рис. 19. Настройка заголовке для поля "№ зачетной"

Как видно, система сформировала таблицу, содержащую 3 столбца. В нашем случае, просмотр View1 содержит 6 столбцов. Чтобы добавить столбец, нужно:

  • сделать клик правой кнопкой мыши на границы таблицы (серый фон) в соответствующем столбце;
  • выполнить команду Left или Right меню Insert Column (рисунок 20).

сделать клик правой кнопкой мыши на границы таблицы (серый фон) в соответствующем столбце;   выполнить команду Left или Right меню Insert Column (рисунок 20)

Рис. 20. Вызов команды добавления нового столбца

Чтобы разместить название заголовке таблицы по центру, используется свойство TextAlign (см. Рисунок 21) объекта TextBox13, который был создан для первого столбца таблицы с названием "Book number".

Рис. 21. Задание центрирования заголовке таблицы

Также, можно настраивать ширину каждого столбца таблицы.

После настройки всех заголовков окно файла отчета будет выглядеть, как показано на рисунке 22.

Рис. 22. Окно отчета после настройки заголовков таблицы

7.3.2.2. Настройка данных

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

Каждый столбец таблицы настраивается отдельно. Первым столбцом в просмотре View1 есть столбец с названием Num_Book. Этот столбец нужно выбрать в контекстном меню таблицы как показано на рисунке 23.

Этот столбец нужно выбрать в контекстном меню таблицы как показано на рисунке 23

Рис. 23. Настройка отображения данных в столбце Book_number (№ зачетной)

Соответствующие поля просмотра View1 выбираются во всех других столбцах. После формирования всех столбцов, таблица примет вид, как показано на рисунке 24.

Рис. 24. Окно отчета после настройки таблицы

7.4. Настройка заголовке отчета

Для задания заголовке отчета используется инструмент TextBox (см. Рисунок 25), который нужно разместить над таблицей. После размещения будет создан соответствующий объект. Чтобы задать название, нужно сделать клик в прямоугольной области инструмента TextBox.

Рис. 25. Задание заголовке отчета "View1"

По желанию, можно улучшить (изменить) вид отчета с помощью других инструментов.

8. Проектирование дополнительной формы и связывания отчета с формой

Согласно условию задачи, при клике на кнопке "Show Report" должна открыться новая форма приложения с созданным отчетом. Поэтому, в программе нужно разработать новую форму.

8.1. Добавление формы к проекту

Разработка дополнительной формы реализуется стандартным для MS Visual Studio способом. Более подробный пример создания новой формы описывается в теме:

Сначала нужно придать форму (файл формы, ресурс) к проекту с помощью команды

Project -> Add Windows Form ...

В результате откроется окно "Add New Item", в котором нужно выбрать шаблон Windows Form и оставить имя файла Form2.cs, которое предлагается системой.

Рис. 26. Окно задания шаблона формы, создается

В результате, Microsoft Visual Studio создаст новую форму, которая, пока не никаких элементов управления. Форме соответствует класс с именем Form2.

8.2. Элемент управления Report Viewer

Чтобы в приложении мог отображаться отчет, в системе Microsoft Visual Studio предусмотрен элемент управления Report Viewer (рисунок 27). Этот элемент управления осуществляет связь приложения (программы) с файлом отчета Report1.rdlc. Сначала нужно перейти в режим проектирования формы "Form2.cs [Design]". Далее, с панели инструментов ToolBox во вкладке Reporting нужно выбрать элемент управления ReportViewer и с помощью мышки разместить его на форме Form2, как показано на рисунке 27. В результате система автоматически предложит выбрать файл отчета в окне ReportViewer Tasks (см. Рис. 27). Кроме того, для элемента управления будет сформирован экземпляр (объект) с именем reportViewer1.

Рис. 27. Размещение элемента управления Report Viewer на форме

После выбора кнопки падение списке в окне Report Viewer Tasks отображается список подключенных (созданных) файлов отчетов. В нашем случае нужно выбрать один файл с именем TrainReports01.Report1.rdlc (рис. 28). Здесь префикс TrainReports01 означает имя нашего проекта.

Здесь префикс TrainReports01 означает имя нашего проекта

Рис. 28. Подключение файла проекта к элементу управления ReportViewer

После выбора файла Report1.rdlc, корректировок размеров формы Form2 и корректировок размеров reportViewer1, окно формы примет вид как показано на рисунке 29.

Рис. 29. Окно дополнительной формы после размещения и настройки элемента управления ReportViewer

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

Чтобы проверить, что файл Report1.rdlc связан с reportViewer1 надо сделать клик на стрелке в правом углу.

Рис. 30. Проверка связи reportViewer1 с файлом отчета Report1.rdlc

9. Листинг файла формы Form2.cs

После настройки reportViewer1, система автоматически сформирует код отображения отчета на форме в обработчике события Load формы Form2. Событие Load формы Form2 вызывается в момент, когда нужно отразить форму на экране. Поэтому, вызов формы Form2 с основной формы (Form1) автоматически отобразит отчет.
Общий листинг модуля Form2.cs следующий:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TrainReports01 {public partial class Form2: Form {public Form2 () {InitializeComponent (); } Private void Form2_Load (object sender, EventArgs e) {// TODO: This line of code loads data into the 'EducationDataSet.View1' table. You can move, or remove it, as needed. this .View1TableAdapter.Fill (this .EducationDataSet.View1) this .reportViewer1.RefreshReport (); }}}

10. Программирование клику на кнопке "Show Report" для вызова отчета с главной формы

Последний шаг - это запрограммировать клик на кнопке "Show Report" главной формы.
Вызов обработчика события Click клику на кнопке Show Report выполняется стандартным для MS Visual Studio способом. Детальное описание программирования события описывается в статье:

НЕ вдаваючись в детали программирования события, ниже приведены код обработчика события button1_Click (), из которого вызывается отчет

// клик по кнопке "Show Report" private void button1_Click (object sender, EventArgs e) {// Form2 f = new Form2 (); // создать экземпляр формы 2 f.ShowDialog (); // вывести форму, автоматически выведется отчет}

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

11. Листинг файла Form1.cs

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TrainReports01 {public partial class Form1: Form {public Form1 () {InitializeComponent (); } // клик по кнопке "Show Report" private void button1_Click (object sender, EventArgs e) {// Form2 f = new Form2 (); // создать экземпляр формы 2 f.ShowDialog (); // вывести форму, автоматически выведется отчет}}}

12. Запуск приложения на выполнение (тестирование)

После запуска приложения на выполнение, окно выполнения программы, где отображается отчет, примет вид как показано на рисунке 31.

Рис. 31. Отображение отчета в программе

связанные темы