При создании запроса, как, впрочем, и других объектов Access, часто используются выражения. Выражением является любая комбинация операторов, констант, значений текстовых констант, имен полей, элементов управления или свойств, результатом вычисления которой может быть конкретное значение.
При создании запроса, как, впрочем, и других объектов Access, часто используются выражения. Выражением является любая комбинация операторов, констант, значений текстовых констант, имен полей, элементов управления или свойств, результатом вычисления которой может быть конкретное значение. Например, когда мы определяли условия отбора записей в запросе, мы создали выражение "История", являющееся строковой константой. В этом случае проверяется точное совпадение значения поля с указанной константой. Однако, можно было использовать оператор отрицания Not и написать Not("История"), тогда, наоборот, были бы отобраны все записи, у которых значение поля Раздел не совпадает с "История". Выражение Like "*христианс*" содержит оператор Like -- оператор сравнения с образцом. Он сравнивает значение поля, по которому ведется отбор записей, с образцом -- текстовой строкой, указанной в кавычках. Символы звездочка (*) слева и справа обозначают любое количество символов слева и справа от указанной строки. Оператор Like определяет наличие указанной строки "христианс" в любом месте поля, в начале, конце или в середине, и возвращает значение Истина (True), если находит эту строку, и Ложь (False), если не находит. Значение Истина (True) приводит к включению записи в результирующий набор, а значение Ложь (False) -- нет. Если бы мы включили в выражение строку "христианс*", то эта строка искалась бы только в начале поля, а строка "*христианс" искалась бы только в конце поля. Другим, часто используемым оператором сравнения с образцом, является оператор Between ... And. Его обычно используют при отборе записей по полю типа Дата, для того, чтобы указать диапазон отбора дат. Например, выражение Between #01.01.00# And #01.02.00# задает диапазон дат между 1 января 2000 года и 1 февраля 2000 года. В этом выражении используются константы даты/времени, которые в Access выделяются символами #. Сама дата должна указываться в формате, определенном в региональных настройках Windows на вашем компьютере. Причем символы # можно не вводить при вводе выражения. Если дата введена правильно, Access добавит их автоматически. Даты, указанные в выражении (концы диапазона), включаются в выборку, то есть это выражение эквивалентно следующему: >= (больше или равно) #01.01.00# And <=(меньше или равно) #01.02.00#
Чтобы посмотреть эти настройки, откройте Панель управления Windows (из меню Пуск - Настройки - Панель управления). На Панели управления дважды щелкните на Язык и стандарты. В появившемся окне Свойства: Язык и стандарты откройте вкладку Дата.
Еще один вид оператора сравнения In позволяет задать список значений. При отборе записей проверяется, совпадает ли значение поля с одним из элементов списка. Если совпадает, возвращается значение Истина (True) и запись включается в результирующий набор, в противном случае ? не включается. Например, нужно отобрать книги нескольких авторов. Это можно сделать двумя способами. Один мы уже знаем. Все фамилии нужно перечислить в столбце Фамилия в строках Условия отбора (Criteria). В каждой строке должно быть по одной фамилии. Тогда будут отобраны записи, удовлетворяющие условию1ИЛИусловию2ИЛИусловию3 и т. д. А можно написать выражение In ("Пушкин"; "Петрарка"; "Мицкевич")
Удалите все установленные раньше условия в запросе и введите в столбец Фамилия это выражение (рис. 6.24).
Переключитесь в режим таблицы. Результат выполнения запроса представлен на рис. 6.25.
Закройте запрос, сохранив его.
В табл. 6.1 представлены некоторые другие операторы, которые могут быть использованы в условиях отбора запроса.
Рис. 6.24. Использование оператора сравнения In Рис. 6.25. Выборка записей по совпадению с элементом списка Таблица 6.1.Примеры часто используемых операторов и функций
Оператор
Пример
Описание
Is
Is Null Is Not Null
Is Null позволяет выбрать записи, не имеющие значения в данном поле. Is Not Null позволяет выбрать записи, имеющие значение в данном поле (любое)
10
Значение равно 10 (обычно этот оператор опускают, так как он используется по умолчанию
<>
<> 15
Значение не равно 15
>
> #15.08.99#
Значение в поле типа дата больше 15 августа 1999 года
>=
>= 18
Значение больше или равно 18
<
< 0
Значение меньше 0 (отрицательное число)
<=
<= #31.12.99#
Значение в поле типа дата меньше или равно 31 декабря 1999 года
&
"[Страна]" & "," & "[Город]"
Оператор слияния двух строковых выражений. В приведенном примере объединяет поля Страна и Город через запятую
And
Like "*антич*" And Like "*сосуд*"
В результат запроса включаются записи, удовлетворяющие одновременно и одному и другому условию. Позволяет отобрать записи, которые содержат в заданном поле подстроку "антич" И подстроку "сосуд" (при поиске информации об античных сосудах)
Or
"Пушкин" Or "Достоевский"
В результат запроса включаются записи, которые удовлетворяют хотя бы одному из указанных условий. Значение поля должно быть либо "Пушкин", либо "Достоевский"
Not
Not "фольклор"
В результат запроса включаются только записи, не содержащие указанное значение в поле
*, /, +, -
[Цена] * [Количество]
Арифметические операторы умножения, деления, сложения и вычитания соответственно
Date()
>= Date()
Функция, которая возвращает текущую дату
DateDiff()
DateDiff("y";[ДатаВыдачи]; [ДатаВозврата]) > 15
Функция, вычисляющая промежуток между двумя датами
Trim()
Trim([Название])
Функция возвращает строку, которая является ее аргументом, без начальных и заключительных пробелов
Iif()
Iif ([ДатаВыдачи]<Date(); 0;1)
Функция ветвления. Имеет три аргумента. Первый аргумент ? выражение, значение которого проверяется, и если это значение Истина (True), функция возвращает значение второго аргумента (в примере 0), если Ложь (False), то возвращается значение третьего аргумента (в примере 1). Второй и третий аргументы функции также могут быть сложными выражениями
Квадратные скобки используются для обозначения имен полей, таблиц и других объектов Access. Обязательным употребление скобок является только для имен, состоящих из нескольких слов, то есть включающих пробелы, однако при обработке введенного вами условия Access автоматически добавляет скобки для всех имен объектов.
Для получения более подробной информации об использовании выражений в запросах воспользуйтесь справочной системой Access. Для этого выберите в меню команду Справка - Справка по Microsoft Access. В окне справки раскройте вкладку Мастер ответов и в поле Выберите действие введите строку Использование выражений. Нажмите кнопку Найти. В поле Выберите раздел появится список разделов, в которых освещается данная тема. Выбирайте любой из интересующих вас разделов и читайте справку.
Помните, что запрос в базе данных Access во многих случаях аналогичен самой таблице, то есть можно рассматривать результат выполнения запроса как виртуальную таблицу, и к ней применимы все действия, касающиеся вывода на печать, экспорта, копирования, рассылки, которые мы рассматривали применительно к обычной таблице.
ЗАДАНИЕ Создайте запрос, который позволил бы отобрать всех читателей, которые записались в библиотеку в октябре. (Они не должны иметь записи в формуляре с датой выдачи меньше 1.10.2000)