Критериите за заявки ви помагат да отсеете определени елементи в база данни на Access. Ако един елемент съответства на всички критерии, които въведете, той се появява в резултатите от заявката.
За да добавите критерии към заявка на Access, отворете заявката в изглед на проектиране и определете полетата (колоните), за които искате да посочите критерии. Ако полето не е в мрежата за проектиране, щракнете двукратно върху полето, за да го добавите към мрежата, а след това въведете критерий в реда Критерии за това поле. Ако не сте сигурни как да направите това, вижте Въведение в заявките.
Критерият за заявка е израз, който Access сравнява със стойностите на полетата на заявката, за да определи дали да включи записа, който съдържа всяка стойност. Например = "Чикаго" е израз, който Access сравнява със стойностите в текстовото поле на заявката. Ако стойността за това поле в даден запис е "Чикаго", Access ще включи записа в резултатите от заявката.
Ето някои примери за често използвани критерии, които можете да използвате като отправна точка за създаване на вашите критерии. Примерите са групирани по типове данни.
В тази тема
- Въведение в критериите за заявка
- Критерии за полета за текст, паметни бележки и хипервръзки
- Критерии за числови полета, полета за валута и полета с автоматично номериране
- Критерии за полета за дата/час
- Критерии за полета "Да/не"
- Критерии за други типове полета
Въведение в критериите за заявка
Критерият е подобен на формула – той е низ, който може да се състои от препратки към полета, оператори и константи. Критериите за заявки се наричат също изрази в Access.
Таблиците по-долу показват някои примерни критерии и обяснява как работят.
| "критерий" | Описание |
|---|---|
| >25 и <50 г. | Този критерий се отнася за числово поле, като например "Цена" или "Наличност". Той включва само записите, където полето "Цена" или "Наличност" съдържа стойност, по-голяма от 25 и по-малка от 50. |
| DateDiff ("гггг", [Дата на раждане], Date()) > 30 | Този критерий се отнася за поле за дата/час, като например "Дата на раждане". В резултата от заявката се включват само записите, където броят години между датата на раждане на лицето и днешната дата е по-голям от 30. |
| Is Null | Този критерий може да се приложи към всеки тип поле, за да се покажат записите, където стойността на полето е Null. |
Както виждате, критериите може да изглеждат много различно в зависимост от типа на данните в полето, към което се прилагат, и от вашите конкретни изисквания. Някои критерии са прости и използват основни оператори и константи. Други са сложни и използват функции, специални оператори и препратки към полета.
Тази тема описва няколко често използвани критерия по тип на данните. Ако примерите, посочени в тази тема, не отговарят на вашите нужди, може да се наложи да напишете свои собствени критерии. За да направите това, трябва първо да се запознаете с пълния списък с функции, оператори и специални знаци, както и със синтаксиса за изрази, препращащи към полета и литерали.
Тук ще видите къде и как да добавяте критериите. За да добавите критерий към заявка, трябва да отворите заявката в изглед за проектиране. След това намерете полетата, за които искате да зададете критерии. Ако полето все още не е в мрежата за проектиране, можете да го добавите, като го плъзнете от прозореца за проектиране на заявки – в мрежата с полета, или като щракнете двукратно върху полето. (Двукратното щракване върху полето автоматично го добавя към следващата празна колона в мрежата с полета.) Накрая въведете критериите в реда Критерии.
Критериите, които сте задали за различните полета в реда Критерии, се комбинират с помощта на оператора "AND". С други думи, критериите, зададени в полетата "Град" и "Дата на раждане", се интерпретират по следния начин:
Град = "Чикаго" ANDBirthDate<DateAdd("гггг", -40, Date())
1.1.2.2 Полетата "Град" и "Дата на раждане" включват критерии.
2.1.2.2 Само записите, където стойността на полето "Град" е "Чикаго", ще отговарят на този критерий.
3.1.2.2 Само записите за тези, които са на възраст най-малко 40 години, ще отговарят на този критерий.
4.1.2.2 В резултата ще бъдат включени само записите, които отговарят на двата критерия.
Какво да направите, ако искате да е изпълнено само едното от тези условия? С други думи, ако имате алтернативни критерии, как да ги въведете?
Ако имате алтернативни критерии или два набора от независими критерии, където е достатъчно записите да отговарят на един от наборите критерии, можете да използвате и двата реда Критерии и или в мрежата за проектиране.
1.1.2.2 Критерият Град е зададен в реда Критерии.
2.1.2.2 Критерият BirthDate е зададен в реда or.
Критериите, зададени в редовете Критерии и или се комбинират с помощта на оператора "OR", както е показано по-долу:
Град = "Чикаго" ORBirthDate<DateAdd("гггг", -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([СтранаРегион]) > 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 или >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 г. | < #2/2/2006# | Връща записите за транзакциите, извършени преди 2 февруари 2006 г. За да видите транзакциите, извършени на или преди тази дата, използвайте оператора <= вместо оператора < . |
| Съдържат стойностите, които са след определена дата, например 02.02.2006 г. | > #2/2/2006# | Връща записите за транзакциите, извършени след 2 февруари 2006 г. За да видите транзакциите, извършени на или след тази дата, използвайте оператора >= вместо оператора > . |
| Съдържат стойностите, които попадат в зададен диапазон от дати | >#02.02.2006# and <#04.02.2006# | Връща записите, където транзакциите са извършени между 2 февруари 2006 г. и 4 февруари 2006 г. Можете също да използвате оператора Between, за да филтрирате по обхват от стойности, включващ крайните точки. Например Between #2/2/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 И <3, всеки запис, в който има поне една стойност, по-голяма от 5 , и една стойност, по-малка от 3, ще съвпада.