Работа с запросами
Использование подчиненных представлений
Подчиненные запросы обычно используются в предложении WHERE для определения условий выборки и в предложении FROM, если нужно определить некоторый результирующий набор в качестве источника данных для представления. Создать представление, содержащее подчиненное представление, можно либо путем ввода инструкции SQL на панели запроса SQL, либо с помощью бланка представления. Если вы недостаточно свободно владеете языком SQL, используйте второй способ.
Сначала создайте подчиненное представление. Для этого, получив на панели запроса SQL необходимую инструкцию и протестировав соответствующий запрос (используя кнопку Запуск (Run) на панели инструментов), скопируйте его в буфер.
Создайте второе представление и вставьте выражение из буфера в предложение FROM или WHERE на панели SQL. Вы можете получить инструкцию SQL, например, такого вида:
SELECT
SupplierName, ProductName
FROM
Products
WHERE
Supplier-ID
IN
(
SELECT
SupplierID
FROM
Suppliers
WHERE
(Country =
'UK'
))
Параметры в инструкциях SQL
В представлении параметры использовать нельзя, однако их можно использовать в инструкциях SQL. которые являются источниками записей в формах и отчетах. То есть можно в свойстве Источник записей (RecordSource) формы или отчета ввести предложение SQL, которое содержит один или несколько параметров. Эти параметры будут либо запрашиваться у пользователя при открытии формы, либо устанавливаться равными текущему значению заданного элемента управления формы. Покажем на примере, как создаются такие формы. Возьмем форму "Products" (Товары) и будем выбирать в ней только те продукты, цена которых выше заданного значения. Это значение и будет параметром.
- Откройте форму "Products" в режиме Конструктора и диалоговое окно свойств формы. В качестве источника записей для этой формы используется таблица "Products". Нажмите кнопку Построителя справа от ячейки Источник записей (RecordSource). Появится сообщение, спрашивающее, действительно ли вы хотите построить запрос на базе таблицы. Нажмите кнопку Да (Yes). Откроется окно Конструктора запросов. На панели схемы запроса уже размещена таблица "Products".
- С помощью кнопок на панели инструментов отобразите все три панели запроса: схему, бланк и запрос SQL. Переместите границы панелей таким образом, чтобы их все хорошо видеть.
- В бланке запроса уже стоит символ звездочки (*), который означает, что в результирующий набор включаются все поля таблицы. Установите флажок с названием поля "UnitPrice" (Цена) на панели схемы запроса. Это поле появится в бланке запроса. Сбросьте флажок в столбце Вывод (Output), чтобы не включать это поле в результирующий набор (оно уже включено символом звездочки). В столбце Критерий (Criteria) введите выражение >? (рис. 17.11). Символ "?" в предложении WHERE и является обозначением параметра.
Рис. 17.11. Создание запроса с параметрами
Рис. 17.12. Задание параметра в форме - Установите флажок у поля "ProductName" (Марка), чтобы добавить его в запрос, и сбросьте флажок в столбце Вывод (Output) бланка запроса. В столбце Тип сортировки (Sort Type) выберите из списка По возрастанию (Ascending), чтобы отсортировать записи по наименованию продукта в прямом алфавитном порядке (см. рис. 17.12).
- Закройте окно Конструктора запроса. Подтвердите сохранение внесенных изменений.
- Переместите курсор в ячейку Входные параметры (Input Parameters) диалогового окна свойств формы и введите выражение Price money= [Введите пороговую цену], где Price– имя параметра; money– тип данных. Выражение справа от знака равенства определяет строку, которая будет выводиться для пользователя при запросе параметра. Вместо этого выражения можно использовать ссылку на элемент управления формы, например Form! [Критерии выборки]! [Цена].