Забыли пароль?

Как использовать динамические запросы в FastReport.Net

Dmitriy Fedyashov

Большинство пользователей FastReport.Net строят отчеты получая данные из SQL СУБД, и хотели бы пользоваться преимуществами Sql в своих отчетах. Ничего не мешает вам использовать динамические запросы, хранимые процедуры и функции. В этой статье мы рассмотрим, как использовать динамические запросы при создании источника данных отчета.

Этот тип запросов применяют для обхода синтаксических ограничений языка SQL. Но такие запросы могут выполняться дольше из-за неоптимального плана запроса, да и безопасность нужно строить иначе. Но сейчас не об этом. Динамические запросы удобны, и поэтому мы хотим их использовать в FastReport.

Давайте рассмотрим пример. Допустим вы хотите фильтровать данные перед показом отчета. Вроде бы все проще некуда. Но, если вы хотите изменять поле, по которому будут фильтроваться данные? Используя динамический запрос, вы можете добавить в тело запроса переменные. Одна из которых – имя поля для наложения условия, а вторая – значение этого поля.

Создадим отчет. Предварительно, нам нужно создать два параметра отчета. Добавим ParamName и ParamValue строкового типа. Теперь создадим подключение к базе данных. Подключаемся к SQL серверу:

 

На этапе выбора таблиц нажмите кнопку  . Она запускает мастер запроса:

 

Задаем имя будущей таблицы и нажимаем Next.

Вводим динамический запрос вручную. Этот запрос имеет два параметра: @Param1 – имя поля, @Param2 – значение поля. Тут можно добавить и третий параметр - знак операции ( =, in, <>, <, >).

Но ограничимся пока двумя. Так как запрос представлен в виде текстового значения, мы используем оператор Execute для выполнения. Нажимаем кнопку Next.

 

В окне определения параметров создаем два с такими же именами, как и в SQL запросе. Необходимо указать Expression. Для первого параметра это [ParamName], а для второго – [ParamValue]. Как вы догадались – это имена параметров отчета, которые мы создали ранее. Нажимаем кнопку Finish.

Мы получили источник данных:

Перетаскиваем поля из таблицы Product на бэнд данные.

А теперь, давайте добавим диалоговую форму. Перетягиваем на нее два параметра из окна Data.

Теперь мы можем задавать имя поля и его значение для фильтрации выборки. Запустим отчет.

 

Задаем значения параметров и нажимаем Ok.

И получаем нужные нам записи. В нашем случае она одна. Давайте попробует отфильтровать отчет по другому полю. Запустим отчет заново.

 

И результат:

Таким образом, вы можете использовать динамические запросы, которые помогут вам избежать лишнего кода или настроек отчета. А если вы работаете с большими объемами данных, то можете ускорить время формирования отчета, благодаря отсечению ненужных данных на этапе их получения.

Похожие статьи:

назад