Запрос (Query), это один из ключевых объектов базы данных Microsoft Access, предназначенный для отбора, сортировки, проведения вычислений, подведения итогов, а также для внесения изменений в данные основных таблиц. Грамотное составление запросов позволяет работать не со всей массивом данных сразу, а только с нужной выборкой.
В этой статье мы подробно разберем основные способы создания запросов: с помощью Мастера запросов (для начинающих) и в Конструкторе запросов (для гибкой настройки), а также рассмотрим популярные типы запросов, такие как «От и До» и параметрические.
Подготовка: Источники данных
Прежде чем создавать запрос, определитесь с источником данных. Запрос может основываться на:
- Одной таблице.
- Нескольких связанных между собой таблицах (например, «Клиенты» и «Заказы»).
- Других запросах.
Важно: Если вы используете несколько таблиц, убедитесь, что между ними установлены связи (Один-ко-Многим) в окне «Схема базы данных» (Вкладка Инструменты базы данных → Связи).
Способ 1: Создание запроса с помощью Мастера (Простой старт)
Мастер запросов идеален для быстрого создания простых запросов на выборку без необходимости вручную настраивать сетку.
- Перейдите на вкладку Создание (Create).
- В группе «Запросы» нажмите Мастер запросов (Query Wizard).
- В открывшемся окне выберите Запрос на выборку (Simple Query Wizard) и нажмите «ОК».
- Выбор полей: В выпадающем списке «Таблицы/Запросы» выберите нужную таблицу. Переносите нужные поля из списка «Доступные поля» в «Выбранные поля» кнопками > (один) или >> (все). Нажмите «Далее».
- Тип итогов (опционально): Если нужно сгруппировать данные (например, сумма продаж по каждому менеджеру), выберите «С итогами» (Summary) и настройте функции (Сумма, Счет, Среднее и т.д.). Если просто нужна выборка записей, оставьте «Подробно» (Detail). Нажмите «Далее».
- Имя запроса: Введите понятное имя (например, Запрос_Продажи_За_Месяц) и выберите «Открыть запрос для просмотра результата» или «Изменить запрос в конструкторе» для доработки.
- Нажмите Готово.
Способ 2: Создание в Конструкторе запросов (Профессиональный подход)
Конструктор дает полный контроль над SQL-логикой, критериями отбора, сортировкой и объединением таблиц.
Запуск и добавление таблиц
- Вкладка Создание → кнопка Конструктор запросов (Query Design).
- Откроется диалоговое окно «Добавление таблицы» (Show Table). На вкладке «Таблицы» (или «Запросы», «Обе») выделите нужные объекты и нажмите Добавить (Add). Можно добавить несколько таблиц за раз, зажав Ctrl.
- Нажмите Закрыть (Close).
- Проверьте связи: Между таблицами должны отображаться линии связи (1 — ∞). Если их нет — перетащите первичный ключ одной таблицы на внешний ключ другой.
Работа с сеткой конструктора (QBE, Query By Example)
Нижняя часть окна — это сетка, где настраиваются поля результата.
| Строка сетки | Назначение |
|---|---|
| Поле (Field) | Выбор поля из таблицы (стрелка вниз) или ввод выражения/вычисляемого поля (например: ПолнаяСтоимость: [Цена]*[Количество]). |
| Таблица (Table) | Автоматически подставляется имя таблицы, к которой принадлежит поле. |
| Сортировка (Sort) | Выбор порядка: По возрастанию (А-Я, 1-9), По убыванию (Я-А, 9-1) или «Не сортировать». |
| Показать (Show) | Снятие галочки скрывает поле из результата (используется для критериев отбора по скрытым полям). |
| Критерий (Criteria) | Условие отбора (фильтр). Примеры см. ниже. |
| Или (Or) | Дополнительные условия по логическому «ИЛИ» (логическое ИЛИ между строками). |
Добавление полей в сетку
- Дважды кликните по имени поля в верхней панели (в окне таблицы) — оно добавится в первую свободную колонку.
- Перетащите поле мышкой в нужную колонку.
- Выберите поле из выпадающего списка в ячейке «Поле».
- Звездочка (*) — добавляет сразу все поля таблицы (быстро, но не позволяет настраивать сортировку/критерии для отдельных полей).
Популярные типы критериев отбора (Строка «Критерий»)
В строке Критерий пишутся условия, по которым отбираются записи. Условия в одной строке работают по логическому «И» (AND), в разных строках (Критерий / Или) — по «ИЛИ» (OR).
Запрос «От и До» (Диапазон значений)
Один из самых частых сценариев — выборка записей в числовом или датном диапазоне;
- Числа:
Between 100 And 1000(включая границы). - Даты:
Between ## And ##(даты в Access обязательно в знаках # #). - Альтернатива:
>=100 And <=1000.
Точное совпадение и текстовые фильтры
- Точное значение:
"Москва"(кавычки ставятся автоматически); - Частичное совпадение (подстрока):
Like "Москва"(звездочка — любое количество символов, ? — один символ). - Начинается на:
Like "М".
Список значений (Оператор IN)
In ("Москва", "Санкт-Петербург", "Казань")
Пустые и непустые значения
- Пустые (Null):
Is Null. - Не пустые:
Is Not Null.
Параметрические запросы (Ввод условия при запуске)
Позволяют пользователю вводить критерий в диалоговом окне каждый раз при открытии запроса.
- В строке Критерий нужного поля введите текст в квадратных скобках:
[Введите название города:]. - При запуске запроса появится окно с подсказкой «Введите название города:» и полем для ввода.
- Это удобно для отчетов и форм, чтобы не менять конструктор каждый раз.
Другие важные типы запросов
На вкладке Конструктор (в группе «Тип запроса») можно переключать режим:
- Запрос на выборку (Select) — основной тип, только чтение данных (описан выше).
- Запрос на создание таблицы (Make Table), создает новую таблицу на основе выборки. Полезно для архивации или промежуточных расчетов. Сначала делается запрос на выборку, затем он конвертируется в этот тип.
- Запрос на добавление (Append) — добавляет записи выборки в существующую таблицу. Требует указания целевой таблицы и сопоставления полей.
- Запрос на обновление (Update) — массово меняет значения в полях существующих записей (например, повысить все цены на 10%). Осторожно: действие необратимо!
- Запрос на удаление (Delete), удаляет отобранные записи из таблицы. Осторожно!
- Перекрестный запрос (Crosstab) — сводная таблица (строки, столбцы, значения/итоги). Создается через Мастер перекрестных запросов.
Вычисляемые поля и агрегатные функции
Вычисляемые поля (Выражения)
В строке Поле пишутся по формату: ИмяНовогоПоля: Выражение.
Примеры:
ПолнаяЦена: [Цена] * [Количество]
Возраст: DateDiff("yyyy"; [ДатаРождения]; Date)
ФИО: [Фамилия] & " " & [Имя] & " " & [Отчество]
Статус: IIf([Сумма] > 10000; "VIP"; "Стандарт")
- Для полей, по которым группируем (например, «Менеджер»), выберите Группировать по (Group By).
- Для полей, которые считаем (например, «Сумма»), выберите: Сумма (Sum), Счет (Count), Среднее (Avg), Мин/Макс (Min/Max).
- Для полей, не участвующих в группировке и расчете, выберите Выражение (Expression) или уберите их из выборки.
Просмотр SQL-кода и сохранение
- Вид SQL: На вкладке «Главная» → «Вид» → «SQL» (или правый клик по вкладке запроса → «SQL»). Это позволяет увидеть/скопировать/отредактировать чистый SQL-код (
SELECT ... FROM ... WHERE ...). - Сохранение: Ctrl + S или значок дискеты. Введите имя (рекомендуется префикс qry_, напр. qry_Продажи_Менеджеры).
- Сохраненный запрос появляется в области навигации слева. Его можно открывать, использовать как источник для форм, отчетов, других запросов или экспорта в Excel.
Типичные ошибки и советы
- Ошибка «Несоответствие типов данных»: Сравниваете текст с числом или дату с текстом. Проверьте формат поля в таблице и критерий в запросе (даты в # #, текст в «»).
- Дубликаты записей: При объединении нескольких таблиц без правильной связи или группировки строки могут повторяться. Используйте «Уникальные значения» (Unique Values / DISTINCT) в свойствах запроса (F4 → Unique Values = Yes).
- Медленная работа: Избегайте лишних полей (не ставьте *, если нужно 3 поля), ставьте индексы на поля связей и критерии отбора в таблицах.
- Имена полей с пробелами: Заключайте в квадратные скобки:
[Дата заказа].
Умение составлять запросы в Access — это основа эффективной работы с данными. Начните с Мастера для простых задач, но обязательно освойте Конструктор: он открывает доступ к мощным возможностям — вычисляемым полям, сложной логике отбора (включая «От и До» и параметры), группировке итогов и действиям по изменению данных (добавление, обновление, удаление). Регулярная практика и изучение SQL-кода, который генерирует Access, быстро повысят ваш уровень владения программой.