Мастер простых запросов с успехом можно использовать для выполнения некоторых операций, однако при этом возможности запросов Access раскрываются не в полной мере. Для получения большего эффекта следует обратиться к режиму конструктора. Как вы знаете из главы 5, существует два формата отображения таблиц — режим таблицы и режим конструктора (в последнем отображается структура таблицы). Запросы также поддерживают этих два режима. Просмотр запроса в режиме конструктора позволяет изменить структуру запроса, применяемую при работе в режиме таблицы. Кроме того, режим конструктора больше подходит для изменения
существующих или создания абсолютно новых запросов. Следующий раздел главы посвящен созданию новых запросов с нуля в режиме конструктора.
Информация, введенная при создании связей, используется Access для выбора поля при подстановке данных из связанной таблицы. Поэтому, прежде чем создавать запросы, желательно сначала организовать связи!
Добавление таблиц и запросов
Первым делом при создании запроса в режиме конструктора следует определить таблицу или запрос, в которой будут содержаться необходимые данные. Вот как это можно сделать.
Рис. 7.9. Создание нового запроса в режиме конструктора
3. На вкладке Таблицы диалогового окна Добавление таблицы выберите значение
Растения и щелкните на кнопке Добавить. Теперь таблица добавлена в запрос.
4. Щелкните на кнопке Закрыть и просмотрите запрос в режиме конструктора (рис. 7.10). В верхней панели отображается таблица, содержащая данные для запроса, а в нижней — поля запроса.
Итак, таблица в запрос добавлена, однако работа на этом не завершена. Выберите команду
Вид>Режим таблицы, и появится сообщение с предупреждением о том, что
для запроса необходимо выделить, по крайней мере, одно поле. Другими словами, поля для отображения запроса еще не определены. Процесс добавления полей описывается в следующем разделе.
Рис. 7.10. Таблица запроса в режиме конструктора
Добавление полей
Для того чтобы получить данные посредством запроса, необходимо определить их местонахождение. Таблица была указана ранее, а теперь займемся определением отдельных полей, для чего нужно выполнить следующие действия.
1. Дважды щелкните на поле Имя в таблице Растения, расположенной в верхней панели окна запроса. В результате поле
Имя будет добавлено в качестве первого поля для запроса (см. первый столбец нижней в панели окна запроса).
2. В верхней панели окна запроса щелкните на поле ЛатинскоеИмя таблицы
Растения. Теперь перетащите это поле вниз и поместите его во второй столбец нижней панели окна запроса.
3. Щелкните на первой строке третьего столбца в нижней панели окна запроса и выберите из раскрывающегося списка доступных полей значение
ИмяКаталога. Окно запроса в режиме конструктора с тремя выбранными полями показано на рис. 7.11.
Рис. 7.11. Определение полей для запроса в режиме конструктора
Как видите, поля для запроса можно определять различными способами. В частности, это можно сделать вручную, указав имя поля в нижней панели окна запроса. После добавления поля в таблице задается его имя и название таблицы, содержащей поле.
Сортировка результатов
Все описанные действия в режиме конструктора можно выполнить и с помощью мастера. Однако режим конструктора обладает и рядом оригинальных возможностей. Например, при его использовании результаты созданного запроса сортируются по имени в алфавитном порядке; не является проблемой и сортировка по латинскому имени. Режим конструктора дает возможность упорядочить получаемые результаты с учетом значений одного или нескольких полей.
1. Выберите команду Вид> Конструктор.
2. Щелкните на третьей строке второго столбца в нижней панели окна запроса. Эта строка, располагаемая под столбцом
ЛатинскоеИмя, называется Сортировка. В результате щелчка на ячейке появится раскрывающийся список.
3. Щелкните на значке стрелки и выберите из списка значение По возрастанию.
4. Щелкните на кнопке Вид в левой области панели инструментов Access и выберите опцию
Режим таблицы (рис. 7.12).
Рис. 7.12. Выбор метода сортировки для запроса
5. Запрос получает те же данные, что и раньше, но теперь они будут отсортированы по латинским именам. Еще раз щелкните на кнопке
Вид для перехода в режим конструктора.
6. Отмените сортировку содержимого столбца ЛатинскоеИмя, щелкнув на ячейке и выбрав в раскрывающемся списке опцию (Отсутствует).
7. Перейдите в верхнюю область столбца ИмяКаталога и переместите указатель мыши чуть ниже, так чтобы он превратился в направленную вниз стрелку. Щелкните левой кнопкой мыши для выделения всего столбца.
8. Удерживая кнопку мыши нажатой, перетащите столбец ИмяКаталога влево, чтобы он стал первым столбцом запроса.
9. Установите для столбца ИмяКаталога тип сортировки По убыванию.
10. Для столбца Имя установите тип По возрастанию.
11. Перейдите в режим таблицы. Как видно из рис. 7.13, содержимое столбца ИмяКаталога отсортировано в обратном алфавитном порядке, а содержимое столбца
Имя — в обычном.
Рис. 7.13. Сортировка двух столбцов запроса
Сортировку данных запросов можно осуществлять самыми различными способами. В частности, допускается сортировка любого поля, любой комбинации полей в порядке возрастания или убывания. При сохранении запроса тип сортировки сохраняется в качестве элемента запроса, поэтому при повторном открытии запроса указывать его заново не придется. Сортировка применяется с учетом расположения столбцов в режиме конструктора. Как было показано ранее, столбец в любой момент можно перетащить на новую позицию.
Если в запросе не будет определен тип сортировки, Access выберет его самостоятельно. Как правило, сортировка производится в соответствии с содержимым первого поля первой таблицы запроса.
Фильтрация результатов
Режим конструктора позволяет настроить фильтр для обработки результатов запроса. Использование фильтров — очень эффективный способ сортировки больших объемов данных. При настройке фильтра необходимо указать некоторые характеристики данных, обрабатываемых запросом, после чего Access отобразит только соответствующие правилам фильтрации строки. Фильтры настраиваются так, как описывается ниже.
1. Перейдите в режим конструктора.
2. В строке Условие отбора первого столбца запроса введите значение Огородник, как показано на рис. 7.14
3. Перейдите в режим таблицы. Как видите, на экране теперь отображаются только строки, в которых поле
ИмяКаталога содержит значение Огородник (рис. 7.15).
Рис. 7.14. Добавление фильтра к запросу
Рис. 7.15. Результаты фильтрации запроса
4. Перейдите в режим конструктора. Введите значение Цветоводство в следующей строке первого столбца, непосредственно под ячейкой фильтра.
5. Переключитесь в режим таблицы. Теперь в таблице отображаются строки с именами каталога
Цветоводство и Огородник. Если вы введете более одного условия фильтрации в нескольких строках нижней панели таблицы запроса, в режиме таблицы будут отображаться только строки, соответствующие указанным критериям.
6. Перейдите в режим конструктора и удалите условие отбора «Цветоводство», выделив его и нажав клавишу <Delete>.
7. Введите значение Тысячелистник в строке Условие отбора столбца
ИмяКаталога, расположенной справа от строки со значением Огородник.
8. Перейдите в режим таблицы. Запрос отобразит одну строку, в которой будет указано значение
Тысячелистник из каталога Огородник. При использовании нескольких фильтров в одной строке таблицы конструктора эта строка отображается только в случае соответствия ее содержимого критериям всех указанных фильтров.
9. Щелкните на кнопке Сохранить, расположенной на панели задач Access. Введите
ФильтрРастений в качестве имени запроса, а затем щелкните на кнопке ОК.
10. Закройте таблицу запроса.
Иногда Access модифицирует введенные критерии фильтрации. Например, при переходе в режим конструктора значение «Тысячелистник» было заключено в кавычки. Не стоит беспокоиться, поскольку таким образом Access лишь проявляет свою заботу о разработчике базы данных.
В Access принято использовать специальные выражения, в которых описываются условия и критерии фильтрации (табл. 7.1). Более полную информацию о них можно получить, обратившись к справочной системе Access.
Таблица 7.1. Выражения, поддерживаемые фильтрами
Выражение |
Описание |
«Голубой» |
Значение «Голубой» |
«Голубой» or «Розовый» |
Или «Голубой» или «Розовый» |
Like «Б*» |
Любое слово, начинающееся с буквы «Б». Знак звездочки (*) — это символ, означающий любое количество символов |
Like «Б??» |
«Бой», «Буй», «Бег» — любое слово из трех букв, начинающееся с буквы «Б». Знак вопроса соответствует одному символу |
< «Н» |
Перед буквой «Н» в алфавите |
333 |
Числовое значение 333 |
>=333 |
Больше или равно 333 |
Between 5 and 100 |
По меньшей мере 5, но не больше чем 100 |
#3/5/2000# |
Дата 5 марта 2000 г. (применяется только в поле Дата/время) |
Not «Зеленый» |
Любое другое значение, но не «Зеленый» |
In («Зеленый», «Красный», «Голубой») |
Значения «Зеленый», «Красный» «Голубой» |
Is Null |
Поле не содержит значения |
Is Not Null |
Поле содержит любое значение (т.е. не пустое) |
Добавление второй таблицы
В Access существует возможность создавать запросы, в которые поступают данные из нескольких таблиц. В следующем примере создается запрос на получение данных обо всех лечебных растениях из российских каталогов.
1. В окне Растения: база данных щелкните на ссылке Запросы.
2. Щелкните на кнопке Создать на панели инструментов.
3. В диалоговом окне Новый запрос выберите опцию Конструктор и щелкните на кнопке
ОК.
4. В диалоговом окне Добавление таблицы выберите таблицу Каталоги и щелкните на кнопке
Добавить.
5. В этом же диалоговом окне выберите таблицу Растения и щелкните на кнопке
Добавить.
6. Щелкните на кнопке Закрыть.
7. Расположите окна Растения: база данных и Запрос: запрос на выборку так, чтобы они не накладывались друг на друга.
8. Выберите ссылку Таблицы в окне Растения: база данных.
9. Перетащите таблицу Типы из окна Растения: база данных в верхнюю панель окна запроса в режиме конструктора. Теперь к запросу будет добавлена таблица
Типы, как показано на рис. 7.16. Обратите внимание, что Access автоматически отображает связи, существующие между таблицами.
Рис. 7.16. Несколько таблиц в окне создания запроса
10. Добавьте в нижнюю панель запроса поля Имя и Страна из таблицы
Каталоги, Имя и ЛатинскоеИмя из таблицы Растения и
Описание из таблицы Типы.
11. Снимите флажок Вывод на экран для поля Страна.
12. Укажите значение Россия в качестве условия отбора для поля Страна.
13. Укажите значение Лечебное в качестве условия отбора для поля Описание. Убедитесь, что оба значения фильтров находятся в одной строке.
14. Для сортировки поля Имя выберите опцию По возрастанию. Последнее окно разработки запроса показано на рис. 7.17.
Рис. 7.17. Окно для создания сложного запроса
15. Перейдите в режим таблицы для просмотра запроса.
16. Сохраните запрос под именем ЛекарстваРоссия.
17. Закройте окно запроса.