При использовании Microsoft Access часто приходится работать со значениями, которые не находятся непосредственно в данных. Например, вам может потребоваться вычислить налог с оборота для заказа или итоговую сумму заказа. Такие значения вычисляются с помощью выражений. Чтобы использовать выражения, их следует записать, используя правильный синтаксис. Синтаксис — это набор правил, по которым сочетаются слова и символы в выражении. Сначала выражения в Access могут показаться сложными для восприятия. Но если разобраться в их синтаксисе и немного попрактиковаться, работа с выражениями не вызовет затруднений.
В этой статье
- Общие сведения о выражениях
- Компоненты выражений
- Объекты, семейства и свойства
- Идентификаторы
- Функции, операторы, константы и значения
- Максимальное число уровней вложенности в веб-базах данных — 65
Общие сведения о выражениях
Выражение — это сочетание некоторых или всех из следующих компонентов: встроенных или пользовательских функций, идентификаторов, операторов, значений и констант. Результатом вычисления выражения является одно значение.
Например, это выражение содержит все четыре указанных компонента:
=Sum([Purchase Price])*0.08
-
Sum()является встроенной функцией -
[Purchase Price]— это идентификатор. -
*— математический оператор -
0.08является константой
Это выражение можно использовать в текстовом поле в нижнем колонтитуле формы или отчета, чтобы вычислить налог с продаж для группы товаров.
Выражения могут быть гораздо сложнее или проще данного примера. Например, это логическое выражение состоит только из оператора и константы:
>0
Это выражение возвращает следующие значения:
-
Trueзначение , если оно сравнивается с числом, превышающим 0. -
Falseесли оно сравнивается с числом, которое меньше 0.
Вы можете использовать это выражение в свойстве ValidationRule (Правило проверки) элемента управления или поля таблицы, чтобы разрешить ввод только положительных значений. Выражения широко используются для вычислений, обработки символов и проверки данных. У всех объектов — таблиц, запросов, форм, отчетов и макросов — есть свойства, принимающие выражения. Например, для элемента управления можно использовать выражения в свойствах ControlSource (Данные) и DefaultValue (Значение по умолчанию). Вы также можете использовать выражения в свойстве ValidationRule (Правило проверки) поля таблицы.
Компоненты выражений
Чтобы создать выражение, следует объединить идентификаторы с помощью функций, операторов, констант и значений. Любое допустимое выражение должно содержать по крайней мере одну функцию или один идентификатор, а также может включать в себя константы или операторы. Выражение также можно использовать как часть другого выражения— обычно в качестве аргумента функции. Это называется вложением выражений.
Идентификаторы. Общий вид:
[Collection name]![Object name].[Property name]Достаточно указать столько частей идентификатора, чтобы он был уникальным в контексте выражения. Не редкость, когда идентификатор принимает форму
[Object name].Функции. Общий вид:
Function(argument, argument)Один из аргументов обычно представляет собой идентификатор или выражение. Для некоторых функций аргументы не нужны. Прежде чем использовать определенную функцию, ознакомьтесь с ее синтаксисом. Дополнительные сведения см. в статье Функции (по категориям).
Операторы. Общий вид:
Identifier operator identifierСуществуют исключения, которые описаны в разделе Операторы.
Константы. Общий вид:
Identifier comparison_operator constantЗначения. Значения могут использоваться в различных частях выражения.
Объекты, семейства и свойства
Все таблицы, запросы, формы, отчеты и поля в базе данных Access также называются объектами. У каждого объекта есть имя. Некоторые объекты уже имеют имена, например таблица "Контакты" в базе данных, созданной на основе шаблона "Контакты" Microsoft Office Access. При создании объекта ему следует дать имя.
Набор всех объектов определенного типа называется семейством. Например, набор всех таблиц в базе данных является семейством. Некоторые объекты, являющиеся частью семейства в базе данных, могут также быть семействами, содержащими другие объекты. Например, объект таблицы — это семейство, содержащее объекты полей.
Объекты имеют свойства, которые описывают и позволяют изменять их характеристики. Например, у объекта запроса есть свойство Представление по умолчанию, описывающее отображение запроса при его выполнении и позволяющее настроить его.
На следующей схеме показана связь между семействами, объектами и свойствами:
|
3 Свойство A 2 Объект 1 Коллекция |
|---|
Идентификаторы
При использовании семейства, объекта или свойства в выражении вы ссылаетесь на него с помощью идентификатора. Идентификатор содержит имена самого элемента и элемента, к которому он относится. Например, идентификатор поля включает в себя имя поля и имя таблицы, в которую оно входит. Пример такого идентификатора:
[Customers]![BirthDate]
В некоторых случаях идентификатором служит само имя элемента. Это справедливо, если имя элемента уникально в контексте создаваемого выражения. Оставшаяся часть идентификатора подразумевается по контексту. Например, при создании запроса, использующего только одну таблицу, идентификатором может быть имя поля без имени таблицы, так как имена полей внутри таблицы уникальны. Так как используется только одна таблица, имя таблицы в любом идентификаторе, используемом в запросе для ссылки на поле, подразумевается.
В других случаях необходимо явно указать части идентификатора, чтобы ссылка работала. Это требуется, если идентификатор не является уникальным в контексте выражения. При наличии неоднозначности необходимо явно указать достаточно частей идентификатора, чтобы сделать его уникальным. Например, предположим, что вы создаете запрос, который использует таблицы "Товары" и "Заказы", и обе из них содержат поля КодТовара. В таком случае идентификатор, используемый в запросе для ссылки на поле КодТовара, должен включать имя таблицы в дополнение к имени поля. Например:
[Products]![ProductID]
Операторы идентификаторов. Существуют три оператора, которые можно использовать в идентификаторах:
- Оператор взрыва (
!) - Оператор dot (
.) - Оператор квадратных скобок (
[ ])
Каждая часть идентификатора заключается в квадратные скобки, а затем они соединяются с помощью восклицательного знака или точки. Например, идентификатор поля с именем Last Name в таблице Employees можно выразить как [Employees]![Last Name]. Оператор "восклицательный знак" означает, что объект, следующий за ним, относится к семейству, указанному до него. В этом случае [Last Name] — объект поля, которое принадлежит к семейству [Employees], являющемуся объектом таблицы.
Строго говоря, не всегда обязательно заключать идентификатор или его части в квадратные скобки. Если в идентификаторе не содержится пробелов или других специальных знаков, квадратные скобки будут добавлены автоматически. Однако рекомендуется самостоятельно вводить скобки. Это помогает избежать ошибок, а также служит визуальным признаком того, что определенная часть выражения является идентификатором.
Функции, операторы, константы и значения
Чтобы создать выражение, требуется не только идентификаторы— необходимо выполнить какое-то действие. Для выполнения действий в выражении используются функции, операторы и константы.
Функции
Функция представляет собой процедуру, которую можно использовать в выражении. Некоторые функции, такие как Date, не требуют входных данных, однако большинству функций нужны аргументы.
В примере в начале этой статьи функция DatePart использует два аргумента[Customers]![BirthDate]: аргумент interval со значением "yyyy" и аргумент date со значением . Функции DatePart требуются по крайней мере эти два аргумента (интервал и дата), но можно указать до четырех аргументов.
В следующем списке приведено несколько функций, часто используемых в выражениях. Для получения дополнительных сведений о синтаксисе функции щелкните ее ссылку.
Функция Date позволяет вставить текущую системную дату в выражение. Она обычно используется в сочетании с функцией Format и с идентификаторами полей, содержащих значения даты и времени.
=Date()Функция DatePart используется для определения или извлечения части даты. Обычно это дата, полученная из идентификатора поля, но иногда значение даты, возвращаемое другой функцией, например Date.
DatePart ( "yyyy", Date())Функция DateDiff используется для определения разницы между двумя датами— обычно между датой, полученной из идентификатора поля, и датой, полученной с помощью функции Date.
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10Функция Format позволяет применить формат к идентификатору или к результату другой функции.
Format([Date],"ww")=Format(Now(),"ww")-1Функция IIf используется для вычисления выражения как true или false, а затем возвращает одно значение, если выражение принимает значение true, и другое значение, если выражение принимает значение false.
=IIf([CountryRegion]="Italy", "Italian", "Some other language")Функция InStr используется для поиска позиции символа или строки в другой строке. Искомая строка обычно берется из идентификатора поля.
InStr(1,[IPAddress],".")Функции Left, Mid и Right используются для извлечения знаков из строки, начиная с первого символа (Left), определенной позиции в середине (Mid) или последнего символа (Right). Они часто используются в сочетании с функцией InStr. Строка, из которой извлекаются символы, обычно берется из поля, заданного идентификатором.
Left([ProductName], 1) Right([AssetCode], 2) Mid([Phone],2,3)
Список функций по категориям см. в этой статье.
Оператор
Оператор — это слово или символ, обозначающий определенную арифметическую или логическую операцию с элементами выражения. Существуют следующие типы операторов:
-
Арифметические, например знак "плюс" (
+). -
Сравнение, например знак равенства (
=). -
Логическое, например
Not. -
Объединение, например
&. -
Специальные, например
Like.
Операторы обычно используются для обозначения отношения между двумя идентификаторами. В приведенных ниже таблицах описаны операторы, используемые в выражениях Access.
Арифметические операторы используется для вычисления значения на основе нескольких чисел или изменения положительного знака числа на отрицательный.
| Оператор | Назначение | Пример |
|---|---|---|
+ |
Сложение двух чисел. | [ПромежуточныеИтоги] + [НалогСПродаж] |
- |
Вычисление разницы между двумя числами или вывод отрицательного значения числа. | [Цена]-[Скидка] |
* |
Перемножение двух чисел. | [Количество]*[Цена] |
/ |
Деление первого числа на второе. | [Итого]/[КоличествоЕдиниц] |
\ |
Округление обоих чисел до целых, деление первого числа на второе и усечение результата до целого. | [Зарегистрировано]\[Комнаты] |
Mod |
Возврат остатка от деления первого числа на второе. | [Зарегистрировано] Mod [Комнаты] |
^ |
Возведение числа в указанную степень. | Число ^ Степень |
Сравнение.
Операторы сравнения позволяют сравнивать значения. Они возвращают результат True (истина), False (ложь) или Null (неопределенное значение).
| Оператор | Назначение |
|---|---|
< |
Определяет, что первое значение меньше второго. |
<= |
Определяет, что первое значение не больше второго. |
> |
Определяет, что первое значение больше второго. |
>= |
Определяет, что первое значение не меньше второго. |
= |
Определяет, что первое значение равно второму. |
<> |
Определяет, что первое значение не равно второму. |
Во всех случаях, если первое или второе значение равно Null, результатом будет также Null. Так как Null представляет неизвестное значение, результат любого сравнения с Null также неизвестен.
Логическое.
Используйте логические операторы для объединения двух значений и возврата результата true (истина), false (ложь) или Null. Логические операторы также называются булевыми.
| Оператор | Использование | Описание |
|---|---|---|
And |
Выраж1 And Выраж2 | Возвращает значение "Истина", если выражения 1 и 2 имеют значение "Истина". |
Or |
Выраж1 Or Выраж2 | Возвращает значение "Истина", если хотя бы одно из выражений 1 и 2 имеет значение "Истина". |
Eqv |
Выраж1 Eqv Выраж2 | Возвращает значение "Истина", если оба выражения 1 и 2 имеют значение "Истина" или оба выражения 1 и 2 равны "Ложь". |
Not |
Not Выраж | Возвращает "Истина", если выражение не имеет значения "Истина". |
Xor |
Выраж1 Xor Выраж2 | Возвращает значение "Истина", если одно и только одно из выражений 1 и 2 имеет значение "Истина". |
Операторы объединения
С помощью операторов объединения можно объединить два текстовых значения в одну строку.
| Оператор | Использование | Описание |
|---|---|---|
& |
строка1 & строка2 | Объединение двух строк в одну. |
+ |
строка1 + строка2 | Объединение двух строк в одну и распространение значений Null. |
Специальные операторы
Специальные операторы используются, как показано в следующей таблице:
| Оператор | Описание | Дополнительные сведения |
|---|---|---|
Is Null or Is Not Null |
Определяет, равно ли значение Null или Not Null. | |
Like "pattern" |
Сопоставляет строковые значения с помощью операторов с подстановочными знаками ?и *. |
Оператор Like |
Between val1 And val2 |
Определяет, находится ли число или дата в пределах диапазона. | Оператор Between...And |
In(string1,string2...) |
Определяет, входит ли строковое значение в множество. | Оператор In |
Константы
Константа — это известное постоянное значение, которое может быть использовано в выражении. В Access есть четыре часто применяемых константы:
-
Trueуказывает на то, что логически верно. -
Falseуказывает на то, что является логически ложным. -
Nullуказывает на отсутствие известного значения. -
"" (empty string)указывает значение, известное как пустое.
Константы могут использоваться в качестве аргументов функций и в выражениях как часть условия. Например, можно использовать пустую строковую константу ("") как часть критерия для столбца в запросе, чтобы оценить значения полей для этого столбца, введя в качестве условия следующее: <>"". В этом примере является оператором и <>"" является константой. Вместе они определяют, что идентификатор нужно сравнить с пустой строкой. Выражение возвращает значение True, если значение идентификатора не равно пустой строке.
Будьте осторожны при использовании константы Null . В большинстве случаев использование Null в сочетании с оператором сравнения приведет к ошибке. Если вы хотите сравнить значение с Null в выражении, используйте Is Null оператор или Is Not Null .
Значения
В выражениях можно использовать значения-литералы, такие как число 1254 или строка "Введите число от 1 до 10". Вы также можете использовать числовые значения, представляющие собой последовательность цифр и при необходимости содержащие знак и десятичный разделитель. При отсутствии знака Access считает значение положительным. Чтобы сделать значение отрицательным, добавьте знак "минус" (-). Также можно использовать научную форму записи. Для этого добавьте символ "E" или "e" и знак экспоненты (например, 1,0E-6).
При использовании текстовых строк заключайте их в кавычки, чтобы они правильно интерпретировались Access. В некоторых ситуациях Access вводит кавычки за пользователя. Например, при вводе текста в выражение для правила проверки или условий запроса Access автоматически заключает текстовые строки в кавычки.
Например, если ввести текст Paris, в выражении Access отобразится "Paris". Если требуется, чтобы выражение удваивало строку, которая фактически заключена в кавычки, вложенную строку следует заключить либо в одинарные (') кавычки, либо в три набора двойных (") кавычек. Например, следующие выражения эквивалентны:
Forms![Contacts]![City]. DefaultValue = ' "Paris" '
Forms![Contacts]![City].DefaultValue = " " "Paris" " "
Чтобы использовать значения даты и времени, заключите значения в знаки фунта (#). Например, #03.07.17#, #7-Мар-17# и #Мар-7-2017# — допустимые значения даты и времени. Когда приложение Access встречает допустимое значение даты и времени, заключенное в символы "#", значение автоматически обрабатывается как имеющее тип даты и времени.
Максимальное число уровней вложенности в веб-базах данных — 65
Выражения, вложенные более 65 уровней глубины, не будут работать в браузере, поэтому не следует использовать такие выражения в веб-базе данных Access. Вы не получите никаких сообщений об ошибках — выражение просто не будет работать.
Использование операторов &, ANDи OR может создавать дополнительные уровни вложенности на сервере, которые не отражаются в клиенте Access. Например, выражение "a" & "b" & "c" не вложено в построителе выражений, но в SharePoint оно становится concatenate.Db("a", concatenate.Db("b", "c") ). При этом создается один уровень вложенности. Использование нескольких последовательных &операторов , ANDили OR в одном выражении может привести к превышению ограничения вложенности сервера в 65. В этот момент выражение не будет работать в браузере.
Работа с построителем выраженийВведение в использование выраженийСоздание выраженийПримеры выражений