- •Часть 2
- •Часть 2
- •Содержание
- •1. Конструктор запросов 4
- •2. Запрос на выборку. 13
- •1. Конструктор запросов
- •Создание выражений с помощью Построителя выражений
- •2. Запрос на выборку.
- •2.1. Запрос, основанный на одной таблице и использующий простое условие
- •2.2. Простая выборка из двух связанных таблиц.
- •2.3. Запрос, использующий вычисляемые поля
- •2.4. Запрос с группировкой
- •2.5. Запрос, использующий связь таблицы с самой собой (рекурсивное соединение)
- •2.6. Запрос, использующий две ссылки на одну таблицу
- •2.7. Выборка повторяющихся записей
- •2.8. Поиск несовпадающих записей
- •2.9. Другие сведения, полезные при разработке запросов
- •3. Запрос на удаление записей.
- •3.1. Запрос на удаление всех записей из таблицы (очистка таблицы)
- •3.2. Запрос на удаление с ограничением числа удаляемых записей
- •3.3. Запрос на удаление с применением внешнего объединения таблиц
- •4. Запрос на добавление записей в существующую таблицу
- •4.1. Запрос на добавление записей во временную таблицу текущей базы данных
- •4.2. Запрос на добавление записей во временную таблицу внешней базы данных
- •5. Запрос на обновление записей в таблице.
- •5.1. Простой запрос на обновление записей
- •5.2. Запрос на обновление полей нескольких связанных таблиц.
- •6. Запросы на объединение.
- •6.1. Запрос на объединение, связывающий воедино однотипные таблицы из различных баз данных.
- •7. Перекрестные запросы
- •7.1. Создание перекрестного запроса при помощи мастера
- •7.2. Сознание перекрестного запроса при помощи конструктора запросов
- •8. Запросы с параметрами
- •9. Подчиненные запросы
- •9.1. Использование подчиненных запросов в выражениях для условий отбора записей
- •9.2. Использование подчиненных запросов в определении полей основного запроса.
- •10. Свойства полей запросов
- •11. Свойства запросов
7.2. Сознание перекрестного запроса при помощи конструктора запросов
Допустим, необходимо создать запрос по квартальным оборотам за 1997 год по странам размещения заказов и по товарам. Для этого создайте новый запрос, откройте его режиме конструктора и добавьте в его макет таблицы Клиенты, Заказы, Заказано и Товары. В контекстном меню запроса выберите пункт Тип запроса | Перекрестный. Конструктор автоматически изобразит связи, существующие на уровне базы данных. В бланк запроса добавьте поля: Страна из таблицы Клиенты, Марка из таблицы Товары. В определения следующих трех полей введите соответственно строки: "Кв " & DatePart("q"; [ДатаРазмещения]; 1; 0) (для этого поля конструктор автоматически присвоит имя Выражение!, Сумма: ССиr([Заказано].[Цена]*[Количество]*(1-[Скидка])/100)*100 и Yеаr([Дата Размещения]). Для полей Страна и Марка установите свойство Перекрестная таблица в значение Заголовки строк, а свойство Сортировка — по возрастанию. Для поля Выражение1 установите свойство Перекрестная таблица в значение Заголовки столбцов, а для поля Сумма свойство Перекрестная таблица должно быть установлено в Значение и свойство Групповые операции — в Sum. Для последнего поля задайте свойства Групповая операция — Условие, Перекрестная таблица — (не отображается) и Условие отбора — 1997. Получившийся запрос изображен на рис. 7.7.
Рис. 7.7. Перекрестный запрос для анализа размещения товаров по странам.
8. Запросы с параметрами
Во всех запросах, описанных выше, в качестве значений для условия отбора использовались константы. Например, в качестве интервала отбора часто применялась конструкция типа Between #01.01.98# And #31.12.98#. Вместо констант #01.01.98# и #31.12.98# в выражениях условий отбора можно использовать переменные (параметры). Параметры представляют собой произвольные текстовые строки (обычно — поясняющий текст), заключенные в квадратные скобки. Вышеприведенное выражение, задающее интервал отбора, можно записать так: Between [Введите начальную дату периода:] And [Введите конечную дату периода:]. При запуске на выполнение запроса, содержащего параметры, на экране отображается диалоговое окно, приглашающее ввести значение параметра (см. рис. 8.1). Введенные пользователем значения подставляются системой в условия отбора (или в определение полей), которые после этого применяются для ограничения числа отбираемых записей.
|
|
Рис. 8.1. Диалоговое окно для ввода значения параметра запроса.
Можно назвать следующие преимущества использования в запросах параметров вместо констант:
Зачастую удобнее задавать значения для условий отбора (или других констант) при запуске запроса на выполнение, а не менять каждый раз константы в режиме конструктора.
Администратор может запретить пользователю, работающему с базой данных, доступ к макету запроса. В результате пользователь не сможет изменить значения констант в режиме конструктора. В этом случае использование параметров — единственный способ организации нормальной работы приложения.
Запросы с параметрами очень удобно использовать в качестве источника данных для формы. В этом случае, в форме программист создает элемент управления, имя которого совпадает с именем параметра (именем параметра считается текст, заключенный в квадратные скобки). При работе с формой диалоговое окно для ввода параметра не выдается, а используется значение, содержащееся в соответствующем элементе управления формы.
Microsoft Access автоматически определяет тип введенных пользователем значений параметра. Однако более разумно самому задать тип данных для каждого из параметров, использующихся в запросе. Для этого служит диалоговое окно Параметры запроса (см. рис. 8.2). Чтобы получить к нему доступ, нужно выбрать из контекстного меню запроса пункт Параметры. В левом столбце таблицы параметров нужно указать имена параметров (например, Введите начальную дату:), а в правом столбце — задать для них тип. Имена параметров не нужно заключать в квадратные скобки, это будет сделано конструктором автоматически.
Рис 8.2. Диалоговое окно Параметры запроса.
После того, как вы укажете в диалоговом окне Параметры запроса всю необходимую информацию и нажмете кнопку ОК, в SQL-операторе появится новая конструкция, начинающаяся с ключевого слова Parameters (см. рис. 8.3). В этой конструкции перечислены все параметры запроса с указанием их типа данных. Обратите внимание, что после этой конструкции ставится точка с запятой, как и в конце всего SQL-оператора.
Рис. 8.3. Оператор SQL, содержащий конструкцию Parameters.
После удаления какого-нибудь параметра из бланка запроса, не забудьте удалить его и в диалоговом окне Параметры запроса (или в строке SQL-оператора), иначе Microsoft Access все равно будет требовать для него ввода значения.
В остальном поведение запросов с параметрами не отличается от поведения вышеописанных базовых запросов.
