C#. Windows Forms. Приклад створення звіту (Report) в локальній базі даних, що розміщується в *.mdf-файлі. База даних типу Microsoft SQL Server




Приклад створення звіту (Report) в локальній базі даних, що розміщується в *.mdf-файлі. База даних типу Microsoft SQL Server

У даному прикладі продемонстровано формування звіту на основі даних, що містяться в локальній базі даних типу 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).

MS SQL Server. Підключення файлу бази даних до проекту

Рис. 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…).

Вікно Add Connection. Вибір джерела даних

Рис. 2. Вікно Add Connection. Вибір джерела даних

Вікно Change Data Source Джерело даних

Рис. 3. Вікно Change Data Source з вибраним джерелом даних Microsoft SQL Server Database File

Якщо все зроблено правильно, то вікно “Add Connection” має прийняти вигляд, як показано на рисунку 4. З допомогою кнопки “Test Connection” можна протестувати з’єднання з базою даних.
Щоб зафіксувати вибір бази даних, потрібно вибрати OK.

База даних MS SQL Server. Вікно "Add Connection..."

Рис. 4. Вікно Add Connection з вибраним типом джерела даних та файлом бази даних Education.mdf

 

4. Вікно утиліти Server Explorer

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

Вікно утиліти Server Explorer. База даних Education.mdf

Рис. 5. Вікно утиліти Server Explorer з базою даних Education.mdf

База даних містить такі складові:

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

 

5. Розробка головної форми додатку

Згідно з умовою задачі, звіт повинен виводитись в окремій формі. Тому, головна форма додатку має вигляд як показано на рисунку 6.

MS Visual Studio - C#. Головна форма

Рис. 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).

MS Visual Studio. Команда Add New Item...

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

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

C# - Windows Forms. Шаблон Report. Задавання імені. Файл звіту Report1.rdlc

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

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

C# - Windows Forms. Вікно. Файл Report1.rdlc

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

 

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

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

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

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

C#. Windows Forms додаток. Панель ToolBox. Інструменти Rave Report

Рис. 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).

База даних Microsoft SQL Server. Вибір джерела даних

Рис. 11. Вибір джерела даних, з якого додаток буде отримувати дані для звіту

Після вибору “Next >” відкриється наступне вікно (рисунок 12). У цьому вікні потрібно вибрати модель бази даних Dataset. Вибрана модель бази даних визначає типи даних об’єктів, які використовує додаток. Ця модель буде додана до нашого проекту.

База даних MS SQL Server. Вибір моделі даних Dataset

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

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

База даних Microsoft SQL Server. Рядок ConnectionString

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

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

Уточнення копіювання файлу бази даних в поточний проект

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

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

База даних SQL Server. Вікно збереження Connection String

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

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

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

База даних MS SQL Server. Вікно Dataset Properties

Рис. 17. Вікно Dataset Properties з відображеними полями представлення View1

За бажанням, можна створити ще одне джерело даних з допомогою кнопки New… (див. рисунок 17).

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

Вікно файлу звіту Report1.rdlc після налаштування таблиці Table

Рис. 18. Вікно файлу звіту Report1.rdlc після розміщення та налаштування таблиці Table

 

7.3.2. Налаштування стовпців таблиці для відображення у звіті

В елементі управління Table1 існує дві області:

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

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

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

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

Як видно, система сформувала таблицю, що містить 3 стовпці. У нашому випадку, перегляд View1 містить 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. Вікно звіту після налаштування заголовків таблиці

 

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

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

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

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

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

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

C#. Звіт Report Viewer. Вікно

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

 

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

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

C# - Windows Forms. Звіт ReportViewer. Заголовок "View1"

Рис. 25. Задавання заголовку звіту “View1”

За бажанням, можна покращити (змінити) вигляд звіту з допомогою інших інструментів.

 

8. Проектування додаткової форми та зв’язування звіту з формою

Згідно з умовою задачі, при кліку на кнопці “Show Report” має відкритись нова форма додатку зі створеним звітом. Тому, в програмі потрібно розробити нову форму.

8.1. Додавання форми до проекту

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

Спочатку потрібно додати форму (файл форми, ресурс) до проекту з допомогою команди

Project -> Add Windows Form...

У результаті відкриється вікно “Add New Item”, в якому потрібно вибрати шаблон Windows Form та залишити ім’я файлу Form2.cs, яке пропонується системою.

C# - Windows Forms. Вікно вибору шаблону форми

Рис. 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.

C# - Windows Forms. Розміщення елементу управління Report Viewer на формі

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

Після вибору кнопки спадання списку, у вікні Report Viewer Tasks відобразиться список підключених (створених) файлів звітів. У нашому випадку потрібно вибрати один файл з іменем TrainReports01.Report1.rdlc (рис. 28). Тут префікс TrainReports01 означає ім’я нашого проекту.

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

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

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

C# - Windows Forms. Вікно додаткової форми

Рис. 29. Вікно додаткової форми після розміщення та налаштування елементу управління ReportViewer

Система автоматично згенерує три об’єкти з іменами EducationDataSet, Query1BindingSource та Query1TableAdapter. Ці об’єкти зв’язують додаток з базою даних. Їх можна використовувати для програмного керування звітом. Але це вже інша тема.

Щоб перевірити, що файл Report1.rdlc зв’язаний з reportViewer1 треба зробити клік на стрілці у правому куті.

C# - Windows Forms. Зв’язок reportViewer1 з файлом звіту Report1.rdlc

Рис. 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.

C# - Windows Forms. Відображення звіту ReportViewer у програмі

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

 


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