Один из первых вопросов, возникающий перед разработчиком при освоении FastReport .Net – как подключить данные к отчету? К счастью, этот генератор отчетов обладает интуитивно понятным интерфейсом дизайнера. Однако, я все же сберегу ваше время, если немного расскажу о процедуре подключения источника данных внутри отчета. Забегая вперед, скажу, что собираюсь показать вам, как передать в отчет строку подключения из пользовательского приложения. Поэтому условно разделю статью на две части: подключение к базе данных внутри отчета и передача строки подключения в отчет.
Рассмотрим на примере. Создаем источник данных. В открывшемся окне выбираем 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. Далее загружаем отчет. Присваиваем значение переменной строки подключения. Присваиваем параметру отчета значение строки подключения. И запускаем отчет. Вуаля!
Итак, из рассмотренного в статье понятно, что подключить отчет к данным - минутное дело. Причем подключить отчет можно практически к любой базе данных. При необходимости, можно передавать в отчет строку подключения. Это удобно, например, когда пользователь сам выбирает место расположения базы данных на локальном диске.