C#. Windows Forms. Пример создания отчета в приложении. Элемент управления Report Viewer. База данных Microsoft Access




Пример создания отчета в приложении. Элемент управления Report Viewer. База данных Microsoft Access

В данном примере приводится пошаговый процесс создания отчета средствами Microsoft Visual Studio. Используя подобный пример, можно создавать отчеты и для других СУБД, например, Microsoft SQL Server.

Конкретный пример для формирования отчета в СУБД Microsoft SQL Server приводится в теме:


Содержание


Поиск на других ресурсах:

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

Задана база данных с именем «Education.mdb», которая была сформирована в системе управления базами данных Microsoft Access. Архив с файлом базы данных можно загрузить здесь.

База данных состоит из 2-х таблиц:

  • таблица Student;
  • таблица Session.

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

Название поля Тип данных Комментарий
ID_Book Целое число (int) Уникальный идентификатор поля, ключевое поле, счетчик
Num_Book Текстовый (10 символов) Номер зачетной книжки студента
Name Текстовый (30 символов) Фамилия и имя студента
Year Целое число (int) Год рождения

 

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

Название поля Тип данных Комментарий
ID_Session Целое число (int) Уникальный идентификатор поля, ключевое поле, счетчик
ID_Book Целое число (int) Номер зачетной книжки
Mathematics Целое число (int) Оценка по математике
Informatics Целое число (int) Оценка по информатике
Philosophy Целое число (int) Оценка по философии

Таблицы связаны между собой по полю ID_Book (номер зачетной книжки). Схема связей между таблицами изображена на рисунке 1.

База данных MS Access. Схема связей между таблицами Student и Session

Рис. 1. Схема связей между таблицами Student и Session

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

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

Данные из отчета будут получаться из запроса, сформированного СУБД Microsoft Access. Запрос называется Query1. Отчет должен отображаться в отдельной форме.

 

Соображения

Чтобы создать отчет в Microsoft Visual Studio, нужно, чтобы в базе данных Microsoft Access был создан запрос. Запросам в Microsoft Access соответствуют представления (Views) в Microsoft Visual Studio.

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

Если в приложении нужно создать несколько различных отчетов, тогда в Microsoft Access нужно создать точно такое же количество запросов для каждого отчета.

 

Выполнение

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

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

 

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

База данных была ранее создана средствами СУБД Microsoft Access. База данных содержит две связанные между собой таблицы Student и Session, а также запрос Query1 на основе которого будет формироваться отчет.

Файл готовой базы данных можно загрузить здесь.

 

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

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

Чтобы использовать базу данных «Education.mdb» нужно подключить ее к проекту стандартным способом. Для подключения файла базы данных к проекту используется команда «Add Connection…» из контекстного меню, которое вызывается в перечне Data Connections (рисунок 2).

Другой способ – выбрать команду «Connect to Database» (рисунок 2).

MS Visual Studio. Варианты подключения файла базы данных к проекту

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

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

  • в окне «Choose Data Source», изображенном на рисунке 3, выбрать источник данных (Data Source) – Microsoft Access Database File;
  • в следующем окне «Add Connection» в поле «Database file name» задать путь к файлу базы данных как показано на рисунке 4 (кнопка «Browse…»).

Подключение базы данных. MS Visual Studio. Окно "Choose Data Source"

Рис. 3. Окно «Choose Data Source». Выбрано «Microsoft Access Database File»

Подключение базы данных в MS Visual Studio. Окно Add Connection

Рис. 4. Окно Add Connection

Более подробно, подключение файла базы данных Microsoft Access к проекту описывается в теме:

После подключения, окно Server Explorer примет вид, как показано на рисунке 5.

MS Visual Studio. Отображение содержимого базы данных Education.mdb в окне Server Explorer

Рис. 5. Отображение содержимого базы данных Education.mdb в окне Server Explorer

 

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

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

C#. Windows Forms. Главная форма приложения

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

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

Настраиваются следующие свойства элементов управления:

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

 

5. Подключение файла отчета к проекту

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

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

MS Visual Studio. Команда Add New Item... из меню Project

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

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

MS Visual Studio. Подключение отчета. Выбор шаблона Report и задание имени Report1.rdlc для файла отчета

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

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

MS Visual Studio. Окно вкладки, которая соответствует файлу Report1.rdlc

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

 

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

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

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

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

MS Visual Studio. Панель ToolBox с инструментами для проектирования отчета

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

 

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

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



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

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

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

 

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

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

В первом окне мастера Data Source Configuration Wizard нужно выбрать источник данных Database (рисунок 11).

MS Visual Studio. Подключение базы данных Выбор источника данных

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

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

Подключение базы данных в MS Visual Studio. Выбор модели данных Dataset

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

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

MS Visual Studio. Настройка соединения с базой данных MS Accesss. Строка ConnectionString

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

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

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

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

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

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

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

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

База данных Microsoft Access. Выбор объектов для отображения

Рис. 16. Выбор объектов для отображения

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

MS Visual Studio. Окно Dataset Properties с отображенными полями запроса Query1

Рис. 17. Окно Dataset Properties с отображенными полями запроса Query1

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

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

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

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

 

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

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

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

 

6.3.2.1. Настройка заголовков

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

C#. MS Visual Studio. Отчет ReportViewer. Настройка заголовка для поля "№ зачетной книжки"

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

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

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

C#. MS Visual Studio. Вызов команды добавления нового столбца

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

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

MS Visual Studio. Создание отчета ReportViewer. Установка центрирования заголовка таблицы

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

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

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

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

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

 

6.3.2.2. Настройка отображения данных

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

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

MS Visual Studio. Формирование отчета. Настройка отображения данных в столбце

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

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

MS Visual Studio. Окно отчета после настройки таблицы

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

 

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

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

MS Visual Studio. Задание заголовка отчета "Query1"

Рис. 25. Задание заголовка отчета «Query1»

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

 

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

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

 

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

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

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

Project -> Add Windows Form...

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

C#. Шаблон Windows Forms. Окно задания шаблона создаваемой формы

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

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

 

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

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

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

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

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

C#. Windows Forms. Подключение файла проекта к элементу управления ReportViewer

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

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

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

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

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

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

C#. Windows Forms. Проверка связи reportViewer1 с файлом отчета Report1.rdlc

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

 

8. Листинг файла формы 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.Query1' table. You can move, or remove it, as needed.

            this.Query1TableAdapter.Fill(this.EducationDataSet.Query1);
            this.reportViewer1.RefreshReport();
        }
    }
}

 

9. Программирование вызова кнопки «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 и происходит вызов формы, на которой будет отображаться отчет.

 

10. Листинг файла 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(); // вывести форму, автоматически выведется отчет
        }
    }
}

 

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

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

Отображение отчета в программе на C#. Шаблон Windows Forms Application

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

 


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