При создании подключения к SQL СУБД вы можете задать запрос, чтобы выбрать отфильтрованные или комбинированные данные. Штатные средства мастера создания источника данных также позволяют включать параметры в SQL запрос. При этом, обозначение параметра будет зависеть от типа СУБД, к которой происходит подключение. Например, для MS SQL параметр в запросе имеет префикс @. А для базы Access вместо параметра указывается символ "?". Если параметров несколько, то в запрос они будут подставляться согласно порядку в списке параметров.
Допустим, мы создали строку подключения к базе данных MS SQL. Следующий шаг – выбор таблиц:
На этом этапе мы можем создать SQL запрос с помощью кнопки Add SQL query… . Результат будущего запроса будет сохранен в таблице. Требуется задать ее имя:
Затем, пишем текст запроса:
Конечно, тут можно воспользоваться визуальным конструктором запросов, но нам сейчас это не нужно, цель демонстрации – запрос.
Мы указали параметр в условии запроса. На следующем шаге нужно создать параметр с тем же именем.
Так как мы просто демонстрируем работу с параметрами, то просто зададим значение по умолчанию:
Далее выбираем нужные колонки.
Вот и все. Таблица готова.
Помните, желательно писать запросы по всем правилам SQL, с указанием схемы и, возможно, с названиями в кавычках. Вот пример правильного запроса к базе postgresql:
1 |
SELECT * FROM public."Users" WHERE "Users"."Name"= @Name
|
Но, помимо параметризированного запроса, мы также можем использовать динамические запросы. Это запросы, которые мы формируем в текстовом виде, а затем – выполняем. Такие запросы позволяют с помощью переменных отчета подставлять, например, имя таблицы или параметра, или часть условия where – все что угодно. Выглядит это так:
Но и это еще не все. Вы также можете использовать хранимые функции и хранимые процедуры в запросе. Пример использования функции:
Параметры в функции передаются в скобках через запятую.
Пример использования хранимой процедуры:
Параметры в хранимой процедуре следуют после имени процедуры через запятую.
Таким образом вы можете расширить возможности формирования данных, чтобы не делать это внутри отчета.