Критериите за заявки ви помагат да отсеете определени елементи в база данни на Access. Ако един елемент съответства на всички критерии, които въведете, той се появява в резултатите от заявката.
За да добавите критерии към заявка на Access, отворете заявката в изглед на проектиране и определете полетата (колоните), за които искате да посочите критерии. Ако полето не е в мрежата за проектиране, щракнете двукратно върху полето, за да го добавите към мрежата, а след това въведете критерий в реда Критерии за това поле. Ако не сте сигурни как да направите това, вижте Въведение в заявките.
Критерият за заявка е израз, който Access сравнява със стойностите на полетата на заявката, за да определи дали да включи записа, който съдържа всяка стойност. Например = "Чикаго" е израз, който Access сравнява със стойностите в текстовото поле на заявката. Ако стойността за това поле в даден запис е "Чикаго", Access ще включи записа в резултатите от заявката.
Ето някои примери за често използвани критерии, които можете да използвате като отправна точка за създаване на вашите критерии. Примерите са групирани по типове данни.
В тази тема
Въведение в критериите за заявка
Критерият е подобен на формула – той е низ, който може да се състои от препратки към полета, оператори и константи. Критериите за заявки се наричат също и изрази в Access.
Таблиците по-долу показват някои примерни критерии и обяснява как работят.
Критерии |
Описание |
---|---|
>25 и <50 |
Този критерий се отнася за числово поле, като например "Цена" или "Наличност". Той включва само записите, където полето "Цена" или "Наличност" съдържа стойност, по-голяма от 25 и по-малка от 50. |
DateDiff ("гггг", [Дата на раждане], Date()) > 30 |
Този критерий се отнася за поле за дата/час, като например "Дата на раждане". В резултата от заявката се включват само записите, където броят години между датата на раждане на лицето и днешната дата е по-голям от 30. |
Is Null |
Този критерий може да се приложи към всеки тип поле, за да се покажат записите, където стойността на полето е Null. |
Както виждате, критериите може да изглеждат много различно в зависимост от типа на данните в полето, към което се прилагат, и от вашите конкретни изисквания. Някои критерии са прости и използват основни оператори и константи. Други са сложни и използват функции, специални оператори и препратки към полета.
Тази тема описва няколко често използвани критерия по тип на данните. Ако примерите, посочени в тази тема, не отговарят на вашите нужди, може да се наложи да напишете свои собствени критерии. За да направите това, трябва първо да се запознаете с пълния списък с функции, оператори и специални знаци, както и със синтаксиса за изрази, препращащи към полета и литерали.
Тук ще видите къде и как да добавяте критериите. За да добавите критерий към заявка, трябва да отворите заявката в изглед за проектиране. След това намерете полетата, за които искате да зададете критерии. Ако полето все още не е в мрежата за проектиране, можете да го добавите, като го плъзнете от прозореца за проектиране на заявки – в мрежата с полета, или като щракнете двукратно върху полето. (Двукратното щракване върху полето автоматично го добавя към следващата празна колона в мрежата с полета.) Накрая въведете критериите в реда Критерии.
Критериите, които сте задали за различните полета в реда Критерии, се комбинират с помощта на оператора "AND". С други думи, критериите, зададени в полетата "Град" и "Дата на раждане", се интерпретират по следния начин:
Град = "Чикаго" AND Дата на раждане < DateAdd (" гггг ", -40, Date())
1. Полетата "Град" и "Дата на раждане" включват критерии.
2. На този критерий ще отговарят само записите, където стойността на полето "Град" е "Чикаго".
3. На този критерий ще отговарят само записите за лицата на възраст най-малко 40 години.
4. В резултата ще бъдат включени само записите, които отговарят и на двата критерия.
Какво да направите, ако искате да е изпълнено само едното от тези условия? С други думи, ако имате алтернативни критерии, как да ги въведете?
Ако имате алтернативни критерии или два набора от независими критерии, където е достатъчно записите да отговарят на един от наборите критерии, можете да използвате и двата реда Критерии и или в мрежата за проектиране.
1. Критерият "Град" е зададен в реда "Критерии".
2. Критерият "Дата на раждане" е зададен в реда "или".
Критериите, зададени в редовете Критерии и или се комбинират с помощта на оператора "OR", както е показано по-долу:
Град = "Чикаго" OR Дата на раждане < DateAdd (" yyyy ", -40, Date())
Ако трябва да зададете повече алтернативи, използвайте редовете под реда или.
Преди да продължите с примерите, обърнете внимание на следното:
-
Ако критерият е временен или се променя често, можете да филтрирате резултатите от заявката, вместо често да променяте критерия за заявката. Филтърът е временен критерий, който променя резултата от заявката, без да променя дизайна й. За повече информация относно филтрите вижте статията Прилагане на филтър за преглед на избрани записи в база данни на Access.
-
Ако полетата за критерии не се променят, но стойностите, които ви интересуват, се променят често, можете да създадете параметризирана заявка. Параметризираната заявка подканва потребителя за стойностите за полетата и след това използва тези стойности, за да създаде критерии за заявки. За повече информация относно параметризираните заявки вижте статията Използване на параметри в заявки и отчети.
Критерии за полета за текст, паметни бележки и хипервръзки
Следващите примери са за полето "СтранаРегион" в заявка, базирана на таблица, в която се съхранява информацията за контакт. Критерият е зададен в реда Критерии на полето в мрежата за проектиране.
Критерият, който задавате за поле "Хипервръзка", по подразбиране се отнася за частта с текст за показване от стойността на полето. За да зададете критерии за частта от стойността URL (еднозначно разположение на ресурса ) местоназначение, използвайте израза HyperlinkPart. Синтаксисът за този израз е както следва: HyperlinkPart([Таблица1].[Поле1],1) = "http://www.microsoft.com/", където "Таблица1" е името на таблицата, съдържаща полето за хипервръзка, "Поле1" е полето за хипервръзка, а "http://www.microsoft.com" URL адресът, искате да съвпада.
За да включите записи, които... |
Използвайте този критерий |
Резултат от заявката |
---|---|---|
Съвпадат точно със стойност, например "Китай" |
"Китай" |
Връща записите, където полето "СтранаРегион" е зададено на "Китай". |
Не съвпадат точно със стойност, например "Мексико" |
Not "Мексико" |
Връща записите, където полето "СтранаРегион" е зададено на страна/регион, различна от "Мексико". |
Започват със зададения низ, например "У" |
Like У* |
Връща записите за всички страни/региони, чиито имена започват с "У", например "Украйна", "Уганда" и т.н. Забележка: Когато се използва в израз, звездичката (*) представлява произволен низ от знаци – тя се нарича още заместващ символ. За списък на такива символи вижте статията Справка за заместващите символи в Access. |
Не започват със зададения низ, например "У" |
Not Like У* |
Връща записите за всички страни/региони, чиито имена не започват с "У". |
Съдържат зададения низ, например "Корея" |
Like "*Корея*" |
Връща записите за всички страни/региони, които съдържат низа "Корея". |
Не съдържат зададения низ, например "Корея" |
Not Like "*Корея*" |
Връща записите за всички страни/региони, които не съдържат низа "Корея". |
Завършват със зададения низ, например "ия" |
Like "*ия" |
Връща записите за всички страни/региони, чиито имена завършват на "ия", например "Англия", "България". |
Не завършват със зададения низ, например "ия" |
Not Like "*ия" |
Връща записите за всички страни/региони, чиито имена не завършват на "ия", например "Того", "Мали". |
Съдържат стойности Null (или липсващи) |
Is Null |
Връща записите, където в полето няма стойност. |
Не съдържат стойности Null |
Is Not Null |
Връща записите, където в полето има стойност. |
Съдържат низове с нулева дължина |
"" (чифт кавички) |
Връща записите, където полето е зададено с празна стойност (но не Null). Например записите за продажби към друг отдел може да съдържат празна стойност в полето "СтранаРегион". |
Не съдържат низове с нулева дължина |
Not "" |
Връща записите, където стойността на полето "СтранаРегион" не е празна. |
Съдържат стойности Null или низове с нулева дължина |
"" Or Is Null |
Връща записите, където или няма стойност в полето, или за полето е зададена празна стойност. |
Не са Null и не са празни |
Is Not Null And Not "" |
Връща записите, където стойността на полето "СтранаРегион" не е празна и не е Null. |
Следват стойност, като например "Мексико", когато са сортирани по азбучен ред |
>= "Мексико" |
Връща записите за всички страни/региони, като се започне от Мексико и се стигне до края на азбуката. |
Влизат в определен диапазон, например от А до Й |
Like "[А-Й]*" |
Връща записите за страните/регионите, чиито имена започват с буквите от "А" до "Й". |
Съвпадат с една от две дадени стойности, например "Сърбия" или "Албания" |
"Сърбия" Or "Албания" |
Връща записите за САЩ и Великобритания. |
Съдържат една от стойностите в списък със стойности |
In("Франция", "Китай", "Германия", "Япония") |
Връща записите за всички страни/региони, посочени в списъка. |
Съдържат определени знаци на определена позиция в стойността на полето |
Right([СтранаРегион], 1) = "я" |
Връща записите за всички страни/региони, където последната буква е "я". |
Удовлетворяват изисквания за дължина |
Len([CountryRegion]) > 10 |
Връща записите за страните/регионите, чието име е с дължина над 10 знака. |
Отговарят на определен шаблон |
Like "Слов????" |
Връща записите за страните/регионите, като например "Словения" и "Словакия", чиито имена са с дължина 8 букви, първите четири от които са "Слов". Забележка: Знаците ? и _, когато се използват в израз, представляват единичен символ – те се наричат още заместващи символи. Знакът _ не може да се използва в един същ израз със заместващия символ ? или *. Можете да използвате заместващия символ _ в израз, който съдържа и заместващия символ %. |
Критерии за числови полета, полета за валута и полета с автоматично номериране
Следващите примери са за полето "Единична цена" в заявка, базирана на таблица, в която се съхранява информацията за продукти. Критерият е зададен в реда Критерии на полето в мрежата за проектиране на заявки.
За да включите записи, които... |
Използвайте този критерий |
Резултат от заявката |
---|---|---|
Съвпадат точно със стойност, например 100 |
100 |
Връща записите, където единичната цена на продукта е 100 лв. |
Не съвпадат точно със стойност, например 1000 |
Not 1000 |
Връща записите, където единичната цена на продукта не е 1000 лв. |
Съдържат стойност, по-малка от дадена стойност, например 100 |
< 100 <= 100 |
Връща записите, където единичната цена е по-малка от 100 лв (<100). Вторият израз (<=100) показва записите, в които цената на дребно на продукта е по-малка или равна на 100 лв. |
Съдържат стойност, по-голяма от дадена стойност, например 99,99 |
>99.99 лв. >= 99,99 |
Връща записите, където единичната цена е по-голяма от 99,99 лв (>99,99). Вторият израз показва записите, в които цената на дребно на продукта е по-голяма или равна на 99,99 лв. |
Съдържат една от две стойности, например 20 или 25 |
20 or 25 |
Връща записите, където единичната цена е 20 лв. или 25 лв. |
Съдържат стойност, която влиза в диапазон от стойности |
>49.99 и <99.99 -Или- Между 50 и 100 |
Връща записите, където единичната цена е между (но не включва) 49,99 лв. и 99,99 лв. |
Съдържат стойност, която излиза извън диапазон |
<50 or >100 |
Връща записите, където единичната цена не е между 50 лв. и 100 лв. |
Съдържат една от много конкретни стойности |
In(20, 25, 30) |
Връща записите, където единичната цена е 20 лв., 25 лв. или 30 лв. |
Съдържат стойност, завършваща на зададените цифри |
Like "*4,99" |
Връща записите, където единичната цена завършва на "4,99", например: 4,99 лв., 14,99 лв., 24,99 лв. и т.н. Забележка: Знаците * и %, когато се използват в израз, представляват произволен брой знаци – те се наричат още заместващи символи. Знакът % не може да се използва в един същ израз със заместващия символ * или ?. Можете да използвате заместващия символ % в израз, който съдържа и заместващия символ _. |
Съдържат стойности Null (или липсващи) |
Is Null |
Връща записите, където в полето "Единична цена" не е въведена стойност. |
Съдържат стойности, които не са Null |
Is Not Null |
Връща записите, където в полето "Единична цена" има стойност. |
Критерии за полета за дата/час
Следващите примери са за полето "Дата на поръчка" в заявка, базирана на таблица, в която се съхранява информацията за поръчки. Критерият е зададен в реда Критерии на полето в мрежата за проектиране на заявки.
За да включите записи, които... |
Използвайте този критерий |
Резултат от заявката |
---|---|---|
Съвпадат точно със стойност, например 02.02.2006 г. |
#02.02.2006# |
Връща записите за транзакциите, извършени на 2 февруари 2006 г. Не забравяйте да оградите стойностите за дати със знака #, за да може Access да ги различи от текстовите низове. |
Не съвпадат със стойност, например 02.02.2006 г. |
Not #02.02.2006# |
Връща записите за транзакциите, извършени в ден, различен от 2 февруари 2006 г. |
Съдържат стойностите, които са преди определена дата, например 02.02.2006 г. |
< #02.02.2006# |
Връща записите за транзакциите, извършени преди 2 февруари 2006 г. За да видите транзакциите, извършени на или преди тази дата, използвайте оператора <=, вместо оператора <. |
Съдържат стойностите, които са след определена дата, например 02.02.2006 г. |
> #02.02.2006# |
Връща записите за транзакциите, извършени след 2 февруари 2006 г. За да видите транзакциите, извършени на или след тази дата, използвайте оператора >= вместо оператора >. |
Съдържат стойностите, които попадат в зададен диапазон от дати |
>#02.02.2006# and <#04.02.2006# |
Връща записите, където транзакциите са извършени между 2 февруари 2006 г. и 4 февруари 2006 г. Можете също да използвате оператора Between, за да филтрирате по обхват от стойности, включващ крайните точки. Например: Between #02.02.2006# and #04.02.2006# е еквивалентно на: >=#02.02.2006# and <=#04.02.2006#. |
Съдържат стойностите, които попадат извън зададен диапазон |
<#02.02.2006# or >#04.02.2006# |
Връща записите, където транзакциите са извършени преди 2 февруари 2006 г. или след 4 февруари 2006 г. |
Съдържат едната от две стойности, например 02.02.2006 или 03.02.2006 |
#02.02.2006# or #03.02.2006# |
Връща записите за транзакциите, извършени на 2 февруари или на 3 февруари 2006 г. |
Съдържат една от много стойности |
In (#01.02.2006#, #01.03.2006#, #01.04.2006#) |
Връща записите, където транзакциите са извършени на 1 февруари 2006 г., 1 март 2006 г. или 1 април 2006 г. |
Съдържат дата, която попада в конкретен месец (независимо от годината), например декември |
DatePart("m", [SalesDate]) = 12 |
Връща записите, където транзакциите са извършени през декември на всяка година. |
Съдържат дата, която попада в конкретно тримесечие (независимо от годината), например първо тримесечие |
DatePart("q", [SalesDate]) = 1 |
Връща записите, където транзакциите са извършени през първото тримесечие на всяка година. |
Съдържат днешната дата |
Date() |
Връща записите за транзакциите, извършени в текущия ден. Ако днешната дата е 02.02.2006 г., ще видите записите, където полето "Дата на поръчка" е зададено като 2 февруари 2006 г. |
Съдържат вчерашната дата |
Date()-1 |
Връща записите за транзакциите, извършени в деня преди текущия. Ако днешната дата е 02.02.2006 г., ще видите записите за 1 февруари 2006 г. |
Съдържат утрешната дата |
Date() + 1 |
Връща записите за транзакциите, извършени в деня след текущия. Ако днешната дата е 02.02.2006 г., ще видите записите за 3 февруари 2006 г. |
Съдържат датите, които попадат в текущата седмица |
DatePart("ww", [SalesDate]) = DatePart("ww", Date()) and Year( [SalesDate]) = Year(Date()) |
Връща записите за транзакциите, извършени през текущата седмица. Седмицата започва в неделя и завършва в събота. |
Съдържат датите, които попадат в предишната седмица |
Year([SalesDate])* 53 + DatePart("ww", [SalesDate]) = Year(Date())* 53 + DatePart("ww", Date()) - 1 |
Връща записите за транзакциите, извършени през миналата седмица. Седмицата започва в неделя и завършва в събота. |
Съдържат датите, които попадат в следващата седмица |
Year([SalesDate])* 53+DatePart("ww", [SalesDate]) = Year(Date())* 53+DatePart("ww", Date()) + 1 |
Връща записите за транзакциите, които ще бъдат извършени следващата седмица. Седмицата започва в неделя и завършва в събота. |
Съдържат дата, която попада в последните 7 дни |
Between Date() and Date()-6 |
Връща записите за транзакциите, извършени през последните 7 дни. Ако днешната дата е 02.02.2006 г., ще видите записите за периода от 24 януари 2006 г. до 2 февруари 2006 г. |
Съдържат дата, която се пада в текущия месец |
Year([SalesDate]) = Year(Now()) And Month([SalesDate]) = Month(Now()) |
Връща записите за текущия месец. Ако днешната дата е 02.02.2006 г., ще видите записите за февруари 2006 г. |
Съдържат дата, която се пада в предишния месец |
Year([SalesDate])* 12 + DatePart("m", [SalesDate]) = Year(Date())* 12 + DatePart("m", Date()) - 1 |
Връща записите за предишния месец. Ако днешната дата е 02.02.2006 г., ще видите записите за януари 2006 г. |
Съдържат дата, която се пада в следващия месец |
Year([SalesDate])* 12 + DatePart("m", [SalesDate]) = Year(Date())* 12 + DatePart("m", Date()) + 1 |
Връща записите за следващия месец. Ако днешната дата е 02.02.2006 г., ще видите записите за март 2006 г. |
Съдържат дата, която попада в последните 30 или 31 дни |
Between Date( ) And DateAdd("M", -1, Date( )) |
Всички записи за продажбите за месеца. Ако днешната дата е 02.02.2006 г., ще видите записите за периода от 2 януари 2006 г. до 2 февруари 2006 г. |
Съдържат дата, която се пада в текущото тримесечие |
Year([SalesDate]) = Year(Now()) And DatePart("q", Date()) = DatePart("q", Now()) |
Връща записите за текущото тримесечие. Ако днешната дата е 02.02.2006 г., ще видите записите за първото тримесечие на 2006 г. |
Съдържат дата, която се пада в предишното тримесечие |
Year([SalesDate])*4+DatePart("q",[SalesDate]) = Year(Date())*4+DatePart("q",Date())- 1 |
Връща записите за предишното тримесечие. Ако днешната дата е 02.02.2006 г., ще видите записите за последното тримесечие на 2005 г. |
Съдържат дата, която се пада в следващото тримесечие |
Year([SalesDate])*4+DatePart("q",[SalesDate]) = Year(Date())*4+DatePart("q",Date())+1 |
Връща записите за следващото тримесечие. Ако днешната дата е 02.02.2006 г., ще видите записите за второто тримесечие на 2006 г. |
Съдържат дата, която попада в текущата година |
Year([SalesDate]) = Year(Date()) |
Връща записите за текущата година. Ако днешната дата е 02.02.2006 г., ще видите записите за 2006 година. |
Съдържат дата, която се пада в предишната година |
Year([SalesDate]) = Year(Date()) - 1 |
Връща записите за транзакциите, извършени миналата година. Ако днешната дата е 02.02.2006 г., ще видите записите за 2005 година. |
Съдържат дата, която се пада в следващата година |
Year([SalesDate]) = Year(Date()) + 1 |
Връща записите за транзакциите с дата от следващата година. Ако днешната дата е 02.02.2006 г., ще видите записите за 2007 година. |
Съдържат дата, която попада между 1 януари и днешния ден (записи от годината до днес) |
Year([SalesDate]) = Year(Date()) and Month([SalesDate]) <= Month(Date()) and Day([SalesDate]) <= Day (Date()) |
Връща записите за транзакциите с дати, които попадат между 1 януари на текущата година и днешната дата. Ако днешната дата е 02.02.2006 г., ще видите записите за периода от 1 януари 2006 г. до 2 февруари 2006 г. |
Съдържат дата от миналото |
< Date() |
Връща записите за транзакциите, извършени преди днешната дата. |
Съдържат дата в бъдещето |
> Date() |
Връща записите за транзакциите, които ще бъдат извършени след днешната дата. |
Филтрират стойности Null (или липсващи) |
Is Null |
Връща записите, където датата на транзакцията липсва. |
Филтрират стойности, които не са Null |
Is Not Null |
Връща записите, където датата на транзакцията е известна. |
Критерии за полета "Да/не"
Например, във вашата таблица "Клиенти" има поле от типа "Да/не" с име ''Активен'', което показва дали акаунтът на съответния клиент е активен към момента. Следващата таблица показва как се оценяват стойностите, въведени в реда ''Критерии'' за полето ''Да/не''.
Стойност на полето |
Резултат |
---|---|
Да, Истина, 1 или -1 |
Тествано за стойност ''Да''. Стойността 1 или -1 се конвертира в "Истина" в реда ''Критерии'', след като я въведете. |
Не, Неистина или 0 |
Тествано за стойност ''Не''. Стойността 0 се конвертира в "Неистина" в реда ''Критерии'', след като я въведете. |
Няма стойност (null) |
Не е тествано |
Всяко число, различно от 1, -1 или 0 |
Няма резултати, ако това е единствената стойност на критерий в полето |
Всеки низ от знаци, различни от Да, Не, Истина или Неистина |
Заявката не може да се изпълни поради грешка ''Несъответствие на типове данни'' |
Критерии за други типове полета
Прикачени файлове – В реда Критерии въведете Is Null, за да включите записите, които не съдържат прикачени файлове. Въведете Is Not Null, за да включите записите, които съдържат прикачени файлове.
Справочни полета – Има два типа справочни полета: такива, които търсят стойности в съществуващ източник на данни (използвайки външен ключ), и такива, които са базирани на списък със стойности, зададени при създаването на справочното поле.
Справочните полета, които са базирани на списък със зададени стойности, са от текстов тип данни и валидните критериите са същите, както за останалите текстови полета.
Критериите, които можете да използвате в справочно поле, базирано на стойности от съществуващ източник на данни, зависят от типа на данните на външния ключ, а не от типа на данните, които се търсят. Може например да имате справочно поле, което показва името на служител, но използва външен ключ, който е от числов тип данни. Тъй като полето съхранява число, а не текст, можете да използвате критерии, които са подходящи за числа, т.е. >2.
Ако не знаете типа на данните на външния ключ, можете да проверите в таблицата източник в изгледа за проектиране, за да определите типовете на данните на полето. За да направите това:
-
Намерете таблицата източник в навигационния екран.
-
Отворете таблицата в изглед за проектиране по един от следните начини:
-
Щракнете върху таблицата и след това натиснете CTRL+ENTER
-
Щракнете с десния бутон върху таблицата и след това щракнете върху Изглед за проектиране.
-
-
Типът на данните за всяко поле е посочен в колоната Тип на данните на мрежата за проектиране на таблици.
Многозначни полета – Данните в едно многозначно поле се съхраняват като редове в скрита таблица, която Access създава и попълва, за да покаже полето. В изгледа за проектиране на заявки това е представено в Списък с полета с помощта на разширяемо поле. За да използвате критерии за многозначно поле, трябва да създадете критерии за един ред на скритата таблица. За да направите това:
-
Създайте заявка, която съдържа многозначното поле, и я отворете в изглед за проектиране.
-
Разгънете многозначното поле, като щракнете върху знака плюс (+) до него – ако полето вече е разширено, ще виждате знак минус (-). Точно под името на полето ще видите поле, което показва една стойност от многозначното поле. Това поле ще има същото име като многозначното поле, но с добавен низ . Стойност.
-
Плъзнете многозначното поле и неговото поле с единична стойност, за да разделите колоните в мрежата за проектиране. Ако искате да виждате в резултатите само цялото многозначно поле, изчистете квадратчето за отметка Показване за полето за единична стойност.
-
Въведете вашите критерии в реда Критерии за полето за единична стойност, като използвате критерии, които са подходящи за типа на данните, представяни от стойностите.
-
Всяка стойност в многозначното поле ще се оценява поотделно с използване на критериите, които създавате. Може например да имате многозначно поле, което съхранява списък с числа. Ако зададете критериите >5 AND <3, съответстващи ще бъдат всички записи, където има поне една стойност, по-голяма от 5, и една стойност, по-малка от 3.