Как подключиться к базе данных внутри отчета

09.02.2016

Один из первых вопросов, возникающий перед разработчиком при освоении FastReport .Net – как подключить данные к отчету? К счастью, этот генератор отчетов обладает интуитивно понятным интерфейсом дизайнера. Однако, я все же сберегу ваше время, если немного расскажу о процедуре подключения источника данных внутри отчета. Забегая вперед, скажу, что собираюсь показать вам, как передать в отчет строку подключения из пользовательского приложения. Поэтому условно разделю статью на две части: подключение к базе данных внутри отчета и передача строки подключения в отчет.

  1. Есть два способа  добавить новый источник данных в отчет:
  • через иконку на панели инструментов вкладки Report;

  • из выпадающего меню Actions в окне «Данные».

Рассмотрим на примере. Создаем источник данных. В открывшемся окне выбираем New connection. Можно выбрать различные типы подключения, вплоть до подключения к базе данных XML. Я воспользуюсь старым добрым MS Access connection.

Далее предлагается выбрать таблицы, с которыми мы будем работать. Однако можно выбрать данные и с помощью SQL-запроса (для xml недоступно). Для этого предусмотрен визуальный конструктор запросов. Впрочем, ничто не мешает написать запрос вручную.

На следующем шаге можно задать параметры запроса. Далее – переопределить типы данных колонок.

Итак, я выбрал две таблицы: employee и orders. Их можно связать по полю EmpNo. Чтобы связать их, открываем выпадающее меню Action в окне «Данные», и выбираем New relation.

Родительская таблица – employee, а дочерняя – orders. Связываем по полю – EmpNo.

Для чего мы это сделали? Теперь мы можем выводить список заказов для каждого сотрудника. Создаем такой нехитрый шаблон отчета:

Здесь бэнд «Данные» содержит детализирующий бэнд «Данные». Как видно - в первом выводится имя и фамилия сотрудника, а во втором –  некоторые данные о заказе.

Добавить детализирующий бэнд «Данные» можно либо из контекстного меню самого бэнда, либо в окне конфигурирования бэндов (Configure bands):

Если сделать двойной клик по первому бэнду  «Данные», мы увидим, что в качестве источника данных выбрана таблица employee. Для второго бэнда «Данные» – orders. Источник данных выбирается автоматически, при добавлении поля в пустой бэнд. Но его можно изменить вручную.

Если источник данных не будет задан – данные не отобразятся. Точнее, отобразится только первая строчка данных для добавленных полей. Сохраняем отчет.

2. Рассмотрим еще одну интересную возможность – возможность передать строку подключения к БД из пользовательского приложения.

Создаем приложение Windows Forms. Добавляем на форму компонент Report из вкладки FastReport .Net и кнопку:

Передача строки подключения в отчет из приложения.

Для начала нужно немного модифицировать созданный ранее отчет. Откроем его в дизайнере.

Создадим параметр отчета. В него мы передадим строку подключения. В окне «Данные» находим элемент Parameters. Правый клик по нему – Новый параметр (New parameter). В окне свойств задаем имя параметра – conn.

Теперь выбираем подключение в окне «Данные». Ниже, в окне свойств, находим ConnectionStringExpression. И добавляем в него созданный нами параметр.

Все. Модификация отчета завершена. Сохраняем его и возвращаемся к программе.

Сделаем двойной клик по кнопке Run. В обработчик события нажатия кнопки добавим основной код приложения:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private string ReportPath = Environment.CurrentDirectory + "/ConnectionFromApp.frx";
private string DBPath = Environment.CurrentDirectory + "/demo.mdb";
private string ConnStr;
 
private void RunBtn_Click(object sender, EventArgs e)
 {
 using (Report report = new Report())
 {
 report.Load(ReportPath);
 ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBPath + ";User ID=Admin";
 report.SetParameterValue("conn", ConnStr);
 report.Show();
 }
 }
 

 

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

По нажатии на кнопку создается экземпляр класса Report. Далее загружаем отчет. Присваиваем значение переменной строки подключения. Присваиваем параметру отчета значение строки подключения. И запускаем отчет. Вуаля!

 

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

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.