FastReport .NET предоставляет достаточно возможностей кастомизации своего дизайнера отчетов.
В этой статье мы рассмотрим, как подменить встроенный редактор SQL запросов на Active Query Builder.
- Для начала необходимо скачать последнюю версию Active Query Builder для .NET с сайта разработчика http://www.activequerybuilder.com/. На момент выхода статьи это версия 3.4.9.1086. Устанавливаем библиотеку с помощь скачанного инсталлятора.
- Для демонстрации создадим приложение WindowsForms. Добавляем в проект ссылки на библиотеки Active Query Builder. Потребуются следующие библиотеки, которые вы найдете в папке с установленной программой (C:\Program Files\ActiveDBSoft\Active Query Builder 3 .NET\assemblies):
- ActiveQueryBuilder.AdvantageMetadataProvider;
- ActiveQueryBuilder.Core;
- ActiveQueryBuilder.DB2MetadataProvider;
- ActiveQueryBuilder.FirebirdMetadataProvider;
- ActiveQueryBuilder.MSSQLCEMetadataProvider;
- ActiveQueryBuilder.InformixMetadataProvider;
- ActiveQueryBuilder.MSSQLMetadataProvider;
- ActiveQueryBuilder.MySQLMetadataProvider;
- ActiveQueryBuilder.ODBCMetadataProvider;
- ActiveQueryBuilder.OLEDBMetadataProvider;
- ActiveQueryBuilder.OracleMetadataProvider;
- ActiveQueryBuilder.OracleNativeMetadataProvider;
- ActiveQueryBuilder.PostgreSQLMetadataProvider;
- ActiveQueryBuilder.SQLiteMetadataProvider;
- ActiveQueryBuilder.SybaseMetadataProvider;
- ActiveQueryBuilder.UniversalMetadataProvider;
- ActiveQueryBuilder.View;
- ActiveQueryBuilder.View.WinForms;
- ActiveQueryBuilder.View.WPF;
- ActiveQueryBuilder.VistaDB5MetadataProvider.
Также, потребуется библиотеки:
- FastReport;
- FastReport.Bars;
- FastReport.Editor.
А теперь добавим в проект файл – плагин для работы с ActiveQueryBuilder. Он расположен тут: J:\Program Files (x86)\FastReports\FastReport.Net\Extras\Misc\ActiveQueryBuilder\ActiveQBForm.cs.
Чтобы сделать это, делаем правый клик по названию проекта в Solution Explorer и выбираем Add -> Existing Item….
Так как приложение у нас демонстрационное, то форма будет содержать всего одну кнопку:
А теперь создаем обработчик события нажатия кнопки с помощью двойного клика по ней:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using FastReport.Forms; using FastReport.Design; using FastReport; … private void button1_Click(object sender, EventArgs e) { Report report = new Report(); FastReport.Utils.Config.DesignerSettings.CustomQueryBuilder += new FastReport.Design.CustomQueryBuilderEventHandler(DesignerSettings_CustomQueryBuilder); report.Design(); } private void DesignerSettings_CustomQueryBuilder(object sender, CustomQueryBuilderEventArgs e) { using (ActiveQBForm form = new ActiveQBForm()) { form.Connection = e.Connection; form.SQL = e.SQL; if (form.ShowDialog() == DialogResult.OK) e.SQL = form.SQL; } } |
По нажатии кнопки создается объект отчета, затем переопределяется обработчик вызова построителя отчета. И вызываем дизайнер отчета.
Ниже мы создали пользовательский обработчик вызова построителя отчетов. Как видите, мы просто вызываем добавленный ранее в проект объект ActiveQBForm.
А теперь запустим приложение. Нажмем единственную кнопку, и увидим дизайнер отчетов. Если вы хотите редактировать существующий отчет, то после создания объекта Report нужно загрузить в него отчет: report.Load("С:/Program Files (x86)/FastReports/FastReport.Net/Demos/Reports/Image.frx");
Теперь добавим в отчет источник данных с помощью иконки:
Нам необходимо создать подключение к субд поддерживающей язык SQL, чтобы в дальнейшем воспользоваться построителем SQL запросов. Например, подключаемся к базе данных Access.
На следующем шаге мастера создания нового источника данных нам предлагается выбрать нужные нам таблицы из базы.
Но в правом нижнем углу есть кнопка “Add SQL query…”, которая запускает мастер создания запроса. На первом шаге создания запроса нужно задать имя для нового представления, которое получится в результате применения создаваемого нами запроса.
А на втором шаге мы можем вручную ввести текст SQL запроса.
Однако, в правом нижнем углу мы видим кнопку “Query Builder…” которая запустит построитель отчетов. Нажимаем ее:
И видим созданный нами на основе ActiveQueryBuilder построитель отчетов. Чтобы добавить таблицу в рабочую область, нужно перетащить ее мышью из области данных справа. Либо сделать правый клик по рабочей области построителя и из контекстного меню выбрать «Добавить»:
И зажав Ctrl выбираем нужные таблицы из базы:
После, нажимаем кнопку “Add Selected Objects” и видим связанные таблицы в построителе:
Внизу окна мы можем увидеть автоматически созданный текст SQL запроса. А на вкладке Result – результат выполнения запроса. Допустим, нас устраивает созданный запрос. Чтобы принять его нажимаем на зеленый значок вверху окна. Для отмены – красный значок.
В мастер запроса передается текст SQL запроса, который мы создали в построителе:
Завершаем создание запроса нажимая кнопку Next, а в конце Finish. Таким же образом завершаем создание источника данных.
Теперь в дизайнере отчета появился источник данных:
Таким образом мы использовали плагин для замены стандартного построителя SQL запросов.