ВЫРАЖЕНИЯ
Фильтры, рассмотренные ранее, содержат условие отбора только для одного поля. Более сложные фильтры и запросы позволяют задавать несколько условий для различных полей. Для указания условий отбора в сложных фильтрах и запросах используются выражения.
Выражения являются основным средством выполнения многих операций в Microsoft Access и представляют собой комбинацию элементов - литералов, констант, функций, идентификаторов и операторов.
Литералом называют значение в явном представлении, например, число, строковое значение или дату. Даты необходимо заключать в символы (#), а строковые значения в прямые кавычки ('').
Результатом работы функции является значение, полученное при выполнении расчётов. Идентификатор представляет собой ссылку на значение поля или объект. Операторы разделяются на арифметические, логические и сравнения (смотри таблицу).
Операторы |
Обозначения в выражениях |
Арифметические |
(*) умножение, (/) деление, (\) целочисленное деление, (^) возведение в степень, (-), (+), (Mod) остаток от целочисленного деления |
Сравнения |
(<), (<=), (<>), (>), (>=), (Between) между |
Логические |
(And), (Or), (Not), (Xor) |
Создавать выражения можно с помощью построителя выражений или непосредственно вводить символы в поля или пользоваться окном Области ввода.
Область ввода выражений
При вводе в поле бланка запроса выражения, размер которого превышает размер поля ввода, можно воспользоваться окном Область ввода, чтобы открыть окно Область ввода, следует указатель мышки установить в ту позицию, в которую следует ввести выражение и затем одновременно нажать клавиши SHIFT и F2 (смотри рисунок).
При вводе выражения осуществляется автоматическая вставка определённых символов в зависимости от типа поля, в которое вводится выражение, но эти символы не всегда добавляются, поэтому их лучше вводить вручную (смотри таблицу).
Определённые символы |
В каких случаях вводить определённые символы |
Прямые скобки ([ ]) |
Вокруг имён полей |
Решётка (#) |
Вокруг дат |
Прямые кавычки ('') |
Вокруг строковых значений |
Знак равенства (=) |
Всегда перед выражением, которое выполняет вычисления |
Создание выражения с помощью построителя выражений
Построитель выражений можно вызвать из поля в бланке запроса. Кликнув правой кнопкой мышки, вызываем контекстное меню и выбираем команду Построить ... .
Рассмотрим элементы окно Построителя выражений (смотри рисунок).
Выражение набирается в верхнем поле окна Построителя выражения. При наборе выражения можно вставлять элементы, выбирая их в нижних
полях Построителя, но можно непосредственно вводить с клавиатуры, закончив набор выражения, следует нажать кнопку OK.
Набранное выражение будет скопировано в позицию поля, из которой был вызван построитель.
Примеры выражений, которые задают условия отбора в запросах.
Поле |
Выражение |
Описание |
DOL |
''техник'' |
Отображаются записи, в которых ДОЛЖНОСТЬ - техник |
DOL |
''инженер'' Or ''лаборант'' |
Отображаются записи, в которых ДОЛЖНОСТЬ - инженер или лаборант |
DOL |
Not ''лаборант'' |
Отображаются все записи, за исключением записей, в которых ДОЛЖНОСТЬ - лаборант |
DOL |
In(''техник'';''лаборант'') |
Отображаются записи, в которых ДОЛЖНОСТЬ - техник или лаборант |
FAM |
Like ''П*'' |
Отображаются записи, в которых ФАМИЛИЯ начинается с буквы П |
FAM |
Not Like''*р*'' |
Отображаются записи в ФАМИЛИИ, которых нет буквы Р |
FAM |
>=''О'' |
Отображаются записи ФАМИЛИИ, которых начинаются с букв от О до Я |
DAT |
Between #01.01.1975# And #31.12.1990# |
Отображаются записи, в которых ДАТА РОЖДЕНИЯ находится в диапазоне от 1.1.1975 до 31.12.1990 |
Or - оператор ИЛИ,
Not – оператор ЗА ИСКЛЮЧЕНИЕМ,
In - оператор ВЫБОРА , Between ... And - оператор, задающий диапазон проверяемых значений
Примеры выражений с функциями DATE(), YEAR(), MONTH(),NOW()
Результаты работы функций DATE(), NOW(), YEAR(), MONTH() используются в выражениях в качестве условий отбора.
Функция DATE() - результатом работы является текущая дата, например, после выполнения DATE() - на экране отобразится 01.09.2012, если функцию выполнили 1 сентября 2012 года.
Функция NOW() - результатом работы является текущий год, час, минуты и секунды.
Функция YEAR(аргумент) - выделяет год, если аргументом является дата. Например: YEAR(#01.10.2012#) - результат 2012.
Функция MONTH(аргумент) выделяет месяц, если аргументом является дата. Например: MONTH(#01.10.2012#) результат 10.
Рассмотрим примеры выражений, которые в качестве условий отбора записей из таблицы КАДРЫ, используют перечисленные выше функции (примеры смотри в Таблице).
Поле |
Выражение |
Описание |
DAT |
YEAR([DAT])>1980 |
Отображаются записи, в которых год рождения >1980 |
DAT |
MONTH([DAT])=11 |
Отображаются записи, в которых месяц рождения 11 |
DAT |
YEAR(DATE())-YEAR([DAT]) >30 |
Отображаются записи, в которых возраст > 30 лет |
DAT |
YEAR(NOW())-YEAR([DAT]) >30 |
Отображаются записи, в которых возраст > 30 лет |
DAT |
YEAR([DAT])>1970 AND YEAR([DAT])<1990 |
Отображаются записи, в которых год рождения >1970 и < 1990 |
Запросы
Подобно фильтрам запросы позволяют ограничить диапазон просмотра данных, извлекая при этом поля из одной или нескольких таблиц. В сущности, запросы представляют собой вопросы, которые пользователь задаёт базе данных, то есть пользователь формирует некоторое условие, а Microsoft Access извлекает соответствующие данные.
Запрос является самостоятельным объектом базы данных. Запрос можно сохранять и использовать многократно. Запрос является производным объектом от таблицы и результатом выполнения запроса также является таблица.
Microsoft Access предлагает два способа создания запросов: в режиме Конструктора и с помощью Мастеров.
Режим Конструктора позволяет не только создавать запрос, но и модифицировать уже существующий. Открыв запрос в режиме Конструктора, можно добавлять поля, задавать условия отбора, определять порядок сортировки, обобщать информацию и так далее.