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.

База даних. Схема зв’язків між таблицями Student і SessionРис. 1. Схема зв’язків між таблицями Student і Session

Розробити додаток, що демонструє використання звітів. Сформувати звіт, що містить таку інформацію:

  • номер залікової (таблиця Student);
  • прізвище та ім’я студента (таблиця Student);
  • оцінка з математики (таблиця Session);
  • оцінка з інформатики (таблиця Session);
  • оцінка з філософії (таблиця Session);
  • середня оцінка (розрахункове поле).

Дані зі звіту будуть отримуватись з запиту, сформованого СКБД Microsoft Access, який має ім’я Query1.

Звіт має виводитись на окремій формі.

 

Міркування

Щоб створити звіт в Microsoft Visual Studio, потрібно, щоб в базі даних Microsoft Access були створені запити. Запити в Microsoft Access мають таке саме поняття як перегляди (Views).

Тому, спочатку в 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…”).

Вікно "Choose Data Source". Вибрано Microsoft Access Database File

Рис. 3. Вікно “Choose Data Source”. Вибрано Microsoft Access Database File

MS Visual Studio. Вікно Add Connection

Рис. 4. Вікно Add Connection

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

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

C# - Windows Forms. База даних 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).

C# - Windows Forms. Команда Add New Item... з меню Project

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

У результаті відкриється вікно “Add New Item…”, в якому потрібно вибрати шаблон Report (рисунок 8) та задати ім’я для файлу звіту Report1.rdlc (за замовчуванням).

C# - Windows Forms. Шаблон Report

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

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

Елемент управління Report Viewer. Вкладка файлу Report1.rdlc

Рис. 9. Вікно вкладки, що відповідає файлу Report1.rdlc

 

6. Проектування звіту

Перед проектуванням звіту потрібно активувати вікно файлу “Report1.rdlc [Design]”.

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

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

C# - Windows Forms. Панель 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. Вибрана модель бази даних визначає типи даних об’єктів, які використовує додаток. Ця модель буде додана до нашого проекту.

C# - Windows Forms. Вибір моделі даних Dataset

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

Після вибору “Next >” відкриється наступне вікно (рисунок 13). У цьому вікні потрібно вибрати з’єднання з базою даних, якою є файл Education.mdb. Цьому з’єднанню відповідає рядок Connection String, який формується системою автоматично.

C# - Windows Forms. З’єднання з базою даних. Рядок ConnectionString

Рис. 13. Налаштування з’єднання з базою даних. Рядок ConnectionString

Після вибору “Next >” потрібно підтвердити копіювання файлу бази даних в поточний проект (рисунок 14). У результаті рядок з’єднання модифікується. Оскільки, база даних Education.mdb вже є підключена до проекту (дивіться п.3), то рекомендовано вибрати “Нет”.

MS Visual Studio - C#. Вікно уточнення копіювання файлу бази даних

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

У наступному вікні (рисунок 15) пропонується зберегти рядок Connection String в конфігураційному файлі додатку. Потрібно залишити все без змін і вибрати “Next >”.

MS Visual Studio - бази даних. Вікно збереження Connection String

Рис. 15. Вікно з пропозицією збереження рядка Connection String в конфігураційному файлі додатку

Наступним є вікно вибору об’єктів бази даних, які будуть включені в набір даних (рисунок 16). У нашому випадку потрібно вибрати усі елементи запиту Query1, який був сформований в СКБД Microsoft Access.

C# - Windows Forms. База даних. Вибір об’єктів для відображення

Рис. 16. Вибір об’єктів для відображення

Після вибору кнопки “Finish” відобразиться попередньо відкрите вікно Dataset Properties зі створеним набором даних (рисунок 17). У цьому вікні відображаються поля запиту Query1, що будуть відображатись у звіті. Варто нагадати, що запит Query1 був спроектований засобами СКБД Microsoft Access.

C# - Windows Forms. Вікно 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 існує дві області:

  • область Header, яка відображає заголовок кожного стовпця таблиці
  • область Data, яка відображає набір даних, що виводяться в кожному рядку таблиці. Набір даних формується на основі запиту Query1.


 

6.3.2.1. Налаштування заголовків

Щоб налаштувати назву кожного стовпця потрібно зробити подвійний клік мишкою у відповідній комірці області Header так, як це показано на рисунку 19.

MS Visual Studio. База даних. Звіт Report Viewer. Налаштування заголовку

Рис. 19. Налаштування заголовку для поля “№ залікової”

Як видно, система сформувала таблицю, що містить 3 стовпці. У нашому випадку, запит Query1 містить 6 стовпців. Щоб додати стовпець, потрібно:

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

C# - Windows Forms. Компонент Report Viewer. Додавання стовпця до таблиці

Рис. 20. Виклик команди додавання нового стовпця

Щоб розмістити назву заголовку таблиці по центру, використовується властивість TextAlign (див. рисунок 21) об’єкту TextBox13, що був створений для першого стовпця таблиці з назвою “Book number”.

C# - Windows Forms. Елемент управління Report Viewer. Центрування заголовку таблиці

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

Також, можна налаштовувати ширину кожного стовпця таблиці.

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

C# - Windows Forms. Елемент управління Report Viewer. Вікно звіту

Рис. 22. Вікно звіту після налаштування заголовків таблиці

 

6.3.2.2. Налаштування даних

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

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

C# - Windows Forms. Report Viewer. Відображення даних у стовпці таблиці

Рис. 23. Налаштування відображення даних у стовпці Book number (№ залікової)

Відповідні поля запиту Query1 вибираються в усіх інших стовпцях. Після формування усіх стовпців, таблиця прийме вигляд, як показано на рисунку 24.

C# - Windows Forms. Звіт Report Viewer. Відображення таблиці

Рис. 24. Вікно звіту після налаштування таблиці

 

6.4. Налаштування заголовку звіту

Для задавання заголовку звіту використовується інструмент TextBox (див. рисунок 25), який потрібно розмістити над таблицею. Після розміщення, буде створено відповідний об’єкт. Щоб задати назву, потрібно зробити клік в прямокутній області інструменту TextBox.

C# - Елемент управління Report Viewer. Заголовок звіту "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.

C# - Windows Forms. Розміщення елементу управління 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. Відображення звіту ReportViewer у програмі

Рис. 31. Відображення звіту у програмі

 


Зв’язані теми