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

14.08.2018

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

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

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

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

 

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

 

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

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

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

 

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

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

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

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

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

 

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

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

 

И результат:

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

.NET FastReport SQL .NET FastReport SQL
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.
20 апреля 2026

Подробный обзор возможностей библиотеки FastGrid

Обзор библиотеки FastGrid для VCL и Lazarus: визуализация, редактирование и структурирование данных. Сортировка, фильтрация, группировка, удобные редакторы данных — всё в одной статье!
17 апреля 2026

Новая система валидации отчетов в FastReport VCL

В этой статье мы расскажем, как работает проверка отчетов в FastReport VCL, как её настроить, как писать собственные правила на примерах и поделимся интересными нововведениями.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»