Когато използвате Microsoft Access, често трябва да работите със стойности, които не са директно в данните ви. Може например да искате да изчислите данъка върху продажбите за дадена поръчка или общата сума на самата поръчка. Можете да изчислите тези стойности с помощта на изрази. За да използвате изрази, трябва първо да ги напишете с помощта на подходящ синтаксис. Синтаксисът е набор от правила, съгласно които думите и символите в даден израз се комбинират правилно. В началото изразите в Access са малко трудни за четене. Но с добро разбиране на синтаксиса на изразите и малко практика нещата стават много по-лесни.
В тази статия
Общ преглед на изразите
Изразът е комбинация на някои или всички от следните компоненти: вградени функции или функции, дефинирани от потребителя, идентификатори, оператори, стойности и константи, които дават като резултат една стойност.
Например следният израз съдържа често срещани компоненти:
=Sum([Purchase Price])*0.08
-
Sum() е вградена функция
-
[Purchase Price] е идентификатор
-
* е математически оператор
-
0.08 е константа
Този израз може да се използва в текстово поле в долния колонтитул на формуляр или отчет, за да се изчисли данък продажби за група от елементи.
Изразите може да бъдат много по-сложни или много по-прости от този пример. Например този булев израз се състои само от оператор и константа:
>0
Този израз връща:
-
True, когато е сравнен с число, по-голямо от 0.
-
False, когато е сравнен с число, по-малко от 0.
Можете да използвате този израз в свойството Валидиращо правило на контрола или поле на таблица, за да осигурите въвеждането само на положителни стойности. Изразите се използват на много места за извършване на изчисления, манипулиране на знаци или тестване на данни. Таблиците, заявките, формулярите, отчетите и макросите имат свойства, които приемат израз. Например можете да използвате изрази в свойствата Източник на контролата и Стойност по подразбиране за контрола. Можете също да използвате изрази в свойството Валидиращо правило за поле от таблица.
Компоненти на изразите
За да създадете израз, комбинирате идентификаторите с помощта на функции, оператори, константи и стойности. Всеки валиден израз трябва да съдържа поне една функция или поне един идентификатор и може също да съдържа константи или оператори. Можете също да използвате израз като част от друг израз – обикновено като аргумент на функция. Това се нарича влагане на израз.
-
Идентификатори Общият формат е:
[Collection name]![Object name].[Property name]
Трябва само да укажете достатъчно части на идентификатора, за да го направите уникален в контекста на вашия израз. Не е необичайно идентификатор да приеме формата на [Object name].
-
Функции Общият формат е:
Function(argument, argument)
Един от аргументите е обикновено идентификатор или израз. Някои функции не изискват аргументи. Преди да използвате дадена функция, прегледайте синтаксиса на тази функция. За повече информация вижте Функции (подредени по категории).
-
Оператори Общият формат е:
Identifier operator identifier
Има изключения от този формат, както е описано в раздела Оператори.
-
Константи Общият формат е:
Identifier comparison_operator constant
-
Стойности Стойностите могат да бъдат на много места в израз.
Обекти, колекции и свойства
Всички таблици, заявки, формуляри, отчети и полета в база данни на Access се наричат поотделно обекти. Всеки обект има име. Някои обекти вече имат имена, като например таблицата "Контакти" в база данни, създадена от шаблона "Контакти" на Microsoft Office Access. Когато създавате нов обект, му давате име.
Наборът от всички членове в определен тип обекти се нарича колекция. Например наборът от всички таблици в база данни е колекция. Някои обекти, които са членове на колекция във вашата база данни, може също така да са колекции, съдържащи други обекти. Един обект на таблица например е колекция, която съдържа обекти на полета.
Обектите имат свойства, които описват и предоставят начин за промяна на характеристиките на обекта. Един обект на заявка например има свойство Изглед по подразбиране, което едновременно описва и ви позволява да зададете начина, по който заявката ще се появява, когато я изпълнявате.
Диаграмата по-долу показва взаимовръзката между колекции, обекти и свойства:
|
3 Свойство 2 Обект 1 Колекция |
Идентификатори
Когато използвате обект, колекция или свойство в израз, вие препращате към този елемент с помощта на идентификатор. Идентификаторът включва името на елемента, който идентифицирате, както и името на елемента, към който принадлежи. Идентификаторът на поле например включва името на полето и името на таблицата, към която полето принадлежи. Пример за такъв идентификатор е:
[Customers]![BirthDate]
В някои случаи името на даден елемент функционира само по себе си като идентификатор. Това е така, когато името на елемента е уникално в контекста на израза, който създавате. Останалата част от идентификатора се подразбира от контекста. Ако например създавате заявка, която използва само една таблица, имената на полетата сами по себе си ще функционират като идентификатори, защото имената на полетата в таблица трябва да са уникални. Тъй като използвате само една таблица, името на таблицата се подразбира във всеки идентификатор, който използвате в заявката, за да препратите към поле.
В други случаи трябва да сте изрични относно частите на идентификатора, за да може препратката да работи. Това е така, когато идентификаторът не е уникален в контекста на израза. Когато има двусмислие, трябва изрично да посочите достатъчно части на идентификатора, за да го направите уникален в контекст. Да предположим например, че създавате заявка, която използва таблица, наречена "Products", и таблица, наречена "Orders", и че и в двете таблици има поле с име ProductID. В този случай идентификаторът, който използвате в заявката, за да препратите към което и да е поле ProductID, трябва да включва и името на таблицата, освен името на полето. Например:
[Products]![ProductID]
Оператори за идентификатор Има три оператора, които можете да използвате в идентификатор:
-
Операторът удивителен знак (!)
-
Операторът точка (.)
-
Операторът квадратни скоби ([ ])
Използвате тези оператори, като ограждате всяка част от идентификатора с квадратни скоби и след това съединявате частите с помощта на оператор удивителен знак или точка. Например идентификатор за поле, наречено "Last Name", в таблица, наречена "Employees", може да се изрази като [Employees]![Last Name]. Операторът удивителен знак казва на Access, че това, което следва, е обект от колекцията, която предхожда оператора удивителния знак. В този случай [Last Name] е обект на поле, което принадлежи на колекцията [Employees], която сама по себе си е обект на таблица.
Строго казано, не винаги трябва да въвеждате квадратни скоби около идентификатор или частичен идентификатор. Ако няма интервали или други специални знаци в идентификатора, Access автоматично добавя скобите, когато прочита израза. Добра практика е обаче да въвеждате скобите сами – това ви помага да избегнете грешки и функционира като визуална подсказка, че дадена част от израза е идентификатор.
Функции, оператори, константи и стойности
За да създадете израз, се нуждаете не само от идентификатори – трябва да извършите и някакво действие. Използвате функции, оператори и константи, за да извършвате действия в изрази.
Функции
Функцията е процедура, която можете да използвате в израз. Някои функции, като например Date, не изискват въвеждане на нещо, за да работят. Повечето функции обаче изискват въвеждане на данни, наречени аргументи.
В примера в началото на тази статия функцията DatePart използва два аргумента: аргумент за интервал (със стойност "yyyy") и аргумент за дата (със стойност [Customers]![BirthDate]. Функцията 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 се използва за оценяване на израз като верен или неверен и връщане след това на една стойност, в случай че изразът е верен, и на друга стойност, в случай че изразът е неверен.
=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 |
True, когато Израз1 и Израз2 са True. |
Or |
Израз1 Or Израз2 |
True, когато или Израз1, или Израз2 е True. |
Eqv |
Израз1 Eqv Израз2 |
True, когато и Израз1, и Израз2 са True или когато и Израз1, и Израз2 са False. |
Not |
Not Израз |
True, когато изразът не е True. |
Xor |
Израз1 Xor Израз2 |
True, когато или Израз1 е True, или Израз2 е True, но не и двата. |
Конкатенация
Можете да използвате оператори за конкатенация, за да комбинирате две текстови стойности в един низ.
Оператор |
Използване |
Описание |
---|---|---|
& |
низ1 & низ2 |
Комбинира два низа, за да формират един низ. |
+ |
низ1 + низ2 |
Комбинира два низа, за да формират един низ, и размножава стойности Null. |
Специални
Можете да използвате специални оператори, както е описано в таблицата по-долу.
Оператор |
Описание |
За повече информация |
---|---|---|
Is Null or Is Not Null |
Определя дали дадена стойност е Null, или не е Null. |
|
Like "pattern" |
Съпоставя низови стойности с помощта на заместващите оператори ? и *. |
|
Between val1 And val2 |
Определя дали цифрова стойност или стойност за дата попада в даден диапазон. |
|
In(string1,string2...) |
Определя дали низова стойност се съдържа в набор от низови стойности. |
Константи
Константата е известна стойност, която не се променя и която можете да използвате в израз. Има четири често използвани константи в Access:
-
True указва нещо, което е логически вярно.
-
False указва нещо, което е логически невярно.
-
Null указва липсата на известна стойност.
-
"" (empty string) указва стойност, за която е известно, че е празна.
Константите могат да се използват като аргументи на функция или като част от критерий в израз. Можете например да използвате константата за празен низ ("") като част от критерий за колона в заявка, за да оцените стойностите на поле за тази колона, като въведете следното като критерий: <>"". В този пример <> е оператор, а "" е константа. Използвани заедно, те указват, че идентификаторът, към който се прилагат, трябва да се сравни с празен низ. Изразът, получен в резултат, е верен, когато стойността на идентификатора е различна от празен низ.
Бъдете внимателни, когато използвате константата 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" " "
За да използвате стойности за дата/час, трябва да ги заградите със знака #. Например низовете #3-7-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, при което изразът няма да работи в браузъра.