Другим способом получения данных из хранилища является способ получения данных при запросе к хранилищу. Запросы (Queries) представляют собой скрипт на одном из диалектов языка SQL, который служит для извлечения данных из таблиц и предоставления их серверу отчетов. Особенность запросов состоит в том, что они получают данные из таблиц базы данных и создают на их основе временную таблицу. Данные во временной таблице будут отфильтрованы, сгруппированы, отсортированы и упорядочены, согласно параметрам запроса. Затем, временная таблица передается на сервер отчетов. Применение запросов предоставляет возможность избежать дублирования данных в таблицах, минимизирует объем передаваемого трафика между СУБД и клиентской частью, а также обеспечивает максимальную гибкость при поиске и отображении данных в базе данных.
Для того чтобы создать запрос, необходимо выделить созданное соединение к хранилищу данных и нажать кнопку Новый запрос (New Query) на панели инструментов сервера. После чего, будет вызвано окно Новый запрос.
В поле Наименование (Name) указывается имя для нового запроса.
В поле Описание (Description) можно указать описание для текущего запроса.
При помощи параметра Период обновления (Refresh Frequency) задается интервал времени, по прошествии которого будет происходить повторное соединение с хранилищем данных и обновление необходимых данных. Доступны следующие варианты:
Однократно (Once) - получение данных осуществляется один раз при создании источника данных;
Каждые 10 минут (Each 10 Minutes) - в этом случае получение данных будет осуществляться каждые 10 минут;
Каждые 30 минут (Each 30 Minutes) - данные будут обновляться каждые полчаса;
Каждый час (Each Hour) - для обновления ежечасно следует выбрать данный вариант;
Каждые 4 часа (Each 4 Hour) - получение данных будет происходить по прошествии каждых 4 часов;
Каждые полдня (Each Half Day) - обновление данных будет происходить раз в 12 часов;
Каждый день (Each Day) - обновление данных будет происходить один раз в сутки;
Всегда (Always) - данный вариант означает, что каждый раз при построении отчета (т.е. при обращении к источнику данных) будет происходить обновление данных.
В этом поле определяется тип: запрос или хранимая процедура.
В данном поле указывается текст запроса, а также присутствую следующие команды управления:
Кнопка Очистить поле предоставляет возможность удалить весь текст запроса из поля Запрос.
Кнопка Проверить запрос предоставляет возможность произвести тестовое выполнение запроса. Результат будет отображен пользователю в виде сообщения.
Кнопка Просмотр запроса предоставляет возможность просмотреть данные запроса.
Панель управления, которая содержит следующие кнопки:
Кнопка Добавить колонку (Add Column) предоставляет возможность добавить колонку данных в источник данных. Стоит учитывать, что добавленная колонка будет содержать лишь описание, т.е. не будет содержать реальных данных.
Кнопка Добавить параметр (Add Parameter) предоставляет возможность добавить в текущий источник данных.
Кнопка Удалить (Delete) предоставляет возможность удалить выделенный параметр или колонку из текущего источника данных.
Кнопка Получить колонки (Retrieve Columns) предоставляет возможность получить все колонки из хранилища данных по текущему запросу.
На данной панели отображаются колонки данных в этом источнике.
Панель параметров выделенной колонки.
Иногда возникает необходимость добавить колонку данных в источник данных или в запрос. Для того чтобы создать новую колонку данных, необходимо нажать кнопку Добавить колонку (Add Column):
Следует отметить, что созданная таким образом колонка данных, является лишь описанием (виртуальной) колонки данных и реальных данных она не содержит. Если в базе данных эта колонка отсутствует, то в момент обращения к базе данных сервер выдаст ошибку. Все созданные колонки данных отображаются в общем списке колонок.
Также у созданной колонки можно изменить параметры:
В поле Наименование в источнике (Name in Source) указывается имя колонки в источнике данных;
В поле Наименование (Name) указывается имя колонки, которое будет отображено пользователю;
Поле Тип (Type) предоставляет возможность выбрать тип данных колонки.
При создании запроса можно использовать Параметры (Parameters) в запросе. Параметры предоставляют возможность передать в запрос дополнительных условий для выборки данных. Параметры могут быть использованы только совместно с SQL-источниками данных. Такие источники данных обычно имеют поле Текст запроса (Text Query).
Для того, чтобы вставить параметр в запрос, следует нажать кнопку Новый параметр (New Parameter) на панели инструментов при создании или редактировании запроса.
После нажатия данной кнопки будет создан новый параметр, который будет отображен в закладке Параметры на панели Колонки (Columns).
Каждый параметр имеет свойства, с помощью которых можно изменить его настройки.
С помощью свойства Имя (Name) можно изменить имя параметра. Это свойство работает только для именованных параметров.
Для того, чтобы изменить тип параметра следует использовать значения свойства Тип (Type). Значения данного свойства находятся в выпадающем списке, и представляют собой перечисление типов, используемых в параметрах для конкретной базы данных. Стоит учитывать, что список типов отличается в зависимости от базы данных.
Для каждого параметра можно указать значение, которое используется для заполнения параметра в процессе автоматического исполнения запроса без участия пользователя.
Если установлен данный флажок, то поле Значение (Value) будет недоступно. По умолчанию, будет использоваться null или значение, которое указано в хранимой процедуре на сервере.
Также параметр необходимо указать и в самом запросе.
Как правило, для указания параметра в запросе используется символ @. Символ @ используется с именованными параметрами, т.е. после символа @ следует имя параметра. Но в некоторых базах данных (к примеру, в OleDB), символ @ может не восприниматься адаптером базы данных и запросы с параметрами работать не будут.
В этом случае можно использовать неименованные параметры. Для указания в запросе неименованных параметров используется символ ?. После символа ? не указывается имя параметра. В этом случае, важен порядок параметров в закладке Параметры. По мере указания символов ? в запросе, параметры будут браться последовательно из закладки Параметры в направлении "сверху-вниз". Допустим есть три параметра, которые указываются в запросе:
Поскольку в данном случае используются неименованные параметры (обозначенные символом ?), то при выполнении запроса параметры будут браться из закладки Параметры последовательно "сверху-вниз". На рисунке снизу схематично представлено сопоставление параметров из закладки Параметры к параметрам в запросе:
При этом, используемые параметры в данном примере должны иметь имена, но при использовании символа ? в запросе, они не играют роли.