Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочный материал к л_р_2.doc
Скачиваний:
5
Добавлен:
19.11.2018
Размер:
360.45 Кб
Скачать

Примеры условий запроса

Условие запроса — это правило, определяющее, какие записи требуется включить в результаты запроса. Добавлять условия к каждому запросу не обязательно: их следует задавать в том случае, если просматривать нужно невсе записи, хранящиеся в базовом источнике данных.

В этом разделе приведено несколько примеров условий запроса. Предполагается, что пользователь знаком с процедурой создания простых запросов на выборку.

Дополнительные сведения о создании запросов на выборку см. в статьеСоздание простого запроса на выборку.

В этом разделе:

  • Общие сведения об условиях запроса

  • Условия для полей типа «Текстовый», «Поле MEMO» и «Гиперссылка»

  • Условия для полей типа «Числовой», «Денежный» и «Счетчик»

  • Условия для полей «Дата/время»

  • Условия для других полей

Общие сведения об условиях запроса

Условие аналогично формуле: это строка, которая может включать ссылки на поля, операторы и константы. В Microsoft Office Access 2007 условия называются также выражениями.

В приведенных ниже таблицах содержатся примеры условий и описание принципов их действия.

УСЛОВИЕ

ОПИСАНИЕ

>25 и <50

Это условие применимо к полю типа полю типа «Числовой», например, к полю «Цена» или «НаСкладе». При использовании этого условия в результаты запроса включаются только те записи, в которых поле «Цена» или «НаСкладе» содержитзначение больше 25 и меньше 50.

DateDiff ("yyyy", [ДатаРождения], Date()) > 30

Это условие применимо к полям типа «Дата/Время», например, к полю «ДатаРождения». В результаты запроса включаются только те записи, в которых количество лет, прошедшее с даты рождения сотрудника до текущей даты, превышает 30.

Is Null

Это условие можно применить к полю любого типа, чтобы отобразить записи с нулевым значением поля.

Как видно из приведенных выше примеров, условия могут быть совершенно различными в зависимости от типа данных поля и требований пользователя. В простых условиях используются базовые операторы и константы. В сложных — функции, специальные операторы и ссылки на поля.

В этом разделе приводится список некоторых наиболее часто применяемых условий для типа данных. Если приведенные примеры не соответствуют требованиям, возможно придется составить собственные условия. Предварительно необходимо изучить полный список функций, операторов, специальных знаков и синтаксис выражений, включающих ссылки на поля и текстовые константы. Дополнительные сведения см. в статьях, перечисленных в разделе См. также.

В этом разделе объясняется, как и где добавлять условия. Чтобы добавить в запрос условие, необходимо открыть запрос в режиме конструктора. Затем следует определить поля, на которые распространяется данное условие. Если в бланке запроса отсутствует нужное поле, его можно добавить самостоятельно, перетащив его из окна конструктора запросов или дважды щелкнув его. (При двойном щелчке поле автоматически добавляется в следующий пустой столбец сетки полей.) Наконец, следует ввести тип условия в строке Условия.

Условия, заданные для различных полей в строке Условия, объединяются с помощью оператора AND. Например, условия, заданные в полях «Город» и «ДатаРождения», интерпретируются следующим образом:

Город = "Москва" AND ДатаРождения < DateAdd("yyyy", -40, Date())

 Поля «Город» и «ДатаРождения» включают условия.

 Этому условию будут удовлетворять только те записи, в которых поле «Город» принимает значение «Москва».

 Этому условию будут удовлетворять только те записи, в которых возраст человека составляет не менее 40 лет.

 В результат будут включены только те записи, которые удовлетворяют обоим условиям.

Как сделать, чтобы выполнялось только одно условие? Другими словами, как ввести взаимоисключающие условия?

Если при наличии взаимоисключающих условий или двух наборов независимых условий требуется, чтобы выполнялось лишь одно условие или набор условий, в бланке запроса следует использовать строки Условия и или.

 Условие «Город» указано в строке «Условия».

 Условие «ДатаРождения» указано в строке «или».

Условия, заданные в строках Условия и или, объединяются с помощью оператора OR, как показано в примере:

Город = "Москва" OR ДатаРождения < DateAdd("yyyy", -40, Date())

Если нужно задать несколько условий, следует использовать строки, расположенные под строкой или.

Прежде чем приступать к изучению примеров, обратите внимание на следующее:

  • Если условие является временным или часто меняется, можно не изменять его, а фильтровать результаты запроса. Фильтр — это временное условие, которое позволяет изменить результаты запроса без изменения его структуры. Дополнительные сведения о фильтрах см. в статье Фильтр: ограничение количества записей в представлении.

  • Если поля для условия не меняются, но при этом часто меняются нужные значения, можно создать запрос с параметрами. В таком запросе пользователю предлагается ввести значения поля, которые затем используются для создания условия запроса. Дополнительные сведения о параметрических запросах см. в статье Использование параметров в запросах и отчетах.

Условия для полей с типами данных «Текстовый», «Поле MEMO» и «Гиперссылка»

Ниже приведены примеры использования поля «Страна» в запросе, сформированном на основе таблицы сведений о контактах. Условие задается в строке Условие для данного поля в бланке запроса.

Условие, заданное для поля типа «Гиперссылка», применяется к отображаемой (текстовой) части значения поля. Чтобы задать условие для части с адресом 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 "*ина"

Записи, в которых названия стран не заканчиваются на «ина», например «Украина» или «Аргентина».

Содержат пустые значения (значение отсутствует)

Is Null

Записи, в которых данное поле не содержит значения.

Не содержат пустых значений

Is Not Null

Записи, в которых данное поле содержит ненулевое значение.

Содержат пустую строку

"" (прямые кавычки)

Записи, в которых поле имеет пустое (но не нулевое) значение. Например, записи о продажах для другого отдела могут содержать пустое значение в поле «Страна».

Не содержат пустую строку

Not ""

Записи, в которых поле имеет непустое значение.

Содержит нулевые или пустые значения

"" Or Is Null

Записи, в которых значение в поле отсутствует или пусто.

Ненулевые и непустые

Is Not Null And Not ""

Записи, в которых поле «Страна» имеет непустое и ненулевое значение.

При сортировке в алфавитном порядке следуют за определенным значением, например «Мексика»

>= "Мексика"

Записи для всех стран, начиная с Мексики и вплоть до конца алфавита.

Входят в определенный диапазон, например от А до Г

Like "[А-Г]*"

Записи, в которых название страны начинается с одной из букв от «А» до «Г».

Совпадают с одним из двух значений, например «Словакия» или «США»

"Словакия" Or "США"

Записи для США и Словакии.

Содержат одно из значений, указанных в списке

In("Франция", "Китай", "Германия", "Япония")

Записи для всех стран, упомянутых в списке.

Содержат определенные знаки в заданном месте значения поля

Right([Страна], 1) = "а"

Все записи, в которых названия стран оканчиваются на букву «а».

Соответствуют заданной длине

Len([Страна]) > 10

Записи, в которых длина названия страны превышает 10 знаков.

Соответствуют заданному шаблону

Like "Лив??"

Записи для стран, таких как Ливия и Ливан, названия которых включают пять знаков, первые три из которых — «Лив».

 ПРИМЕЧАНИЕ.   Используемые в выражении знаки ? и _ являются подстановочными и заменяют один знак. . Знак _ нельзя использовать в одном выражении со знаком ?или в одном выражении с подстановочным знаком *. Можно использовать подстановочный знак _ в выражении, которое содержит знак %.

Условия для полей типа «Числовой», «Денежный» и «Счетчик»

Ниже приведены примеры использования поля «Цена» в запросе, сформированном на основе таблицы сведений о товарах. Условие задается в строке Условия для данного поля в бланке запроса.

ЗАПИСИ

УСЛОВИЕ

РЕЗУЛЬТАТ ЗАПРОСА

Точно соответствуют определенному значению, например 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 and <99.99 -или- Between 50 and 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 рублей и т. д.

 ПРИМЕЧАНИЕ.   Используемые в выражении знаки * и % являются подстановочными и заменяют любое количество знаков. . Знак %нельзя использовать в одном выражении со знаком * или в одном выражении с подстановочным знаком ?. Можно использовать подстановочный знак % в выражении, которое содержит знак _.

Содержат пустые (или отсутствующие) значения

Is 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 и 4 февраля 2006 г.

Для фильтрации по диапазону значений можно также использовать оператор Between. Например, выражение Between #02.02.2006# and #04.02.2006# идентично выражению >#02.02.2006# and <#04.02.2006#.

Содержат значения, которые не входят в определенный диапазон

>#02.02.2006# and <#04.02.2006#

Записи об операциях, совершенных либо до 2 февраля либо после 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 февраля, 1 марта или 1 апреля 2006 г.

Содержат любой день заданного месяца (вне зависимости от года), например, «декабрь»

DatePart("М", [ДатаПродажи]) = 12

Записи об операциях, совершенных в декабре любого года.

Содержат любую дату в пределах заданного, (например, первого) квартала вне зависимости от года

DatePart("q", [ДатаПродажи]) = 1

Записи об операциях, совершенных в первом квартале любого года.

Содержат текущую дату

Date()

Записи об операциях, совершенных на текущую дату. Если текущая дата — 02.02.2006, отображаются записи, в которых значению поля «ДатаЗаказа» соответствует 2 февраля 2006 г.

Содержат вчерашнюю дату

Date()-1

Записи об операциях, совершенных за один день до текущей даты. Если текущая дата — 02.02.2006, отображаются записи с датой 1 февраля 2006 г.

Содержат завтрашнюю дату

Date() + 1

Записи об операциях, совершенных на следующий день после текущей даты. Если текущая дата — 02.02.2006, отображаются записи с датой 3 февраля 2006 г.

Содержат даты, которые приходятся на текущую неделю

DatePart("ww", [ДатаПродажи]) = DatePart("ww", Date()) and Year( [ДатаПродажи]) = Year(Date())

Записи об операциях, совершенных на текущей неделе. Неделя начинается в понедельник и заканчивается в воскресенье.

Содержат даты, которые приходятся на прошедшую неделю

Year([ДатаПродажи])* 53 + DatePart("ww", [ДатаПродажи]) = Year(Date())* 53 + DatePart("ww", Date()) - 1

Записи об операциях, совершенных на прошедшей неделе. Неделя начинается в понедельник и заканчивается в воскресенье.

Содержат даты, которые приходятся на следующую неделю

Year([ДатаПродажи])* 53+DatePart("ww", [ДатаПродажи]) = Year(Date())* 53+DatePart("ww", Date()) + 1

Записи об операциях, которые будут совершены на следующей неделе. Неделя начинается в понедельник и заканчивается в воскресенье.

Содержат один из последних 7 дней

Between Date() and Date()-6

Записи об операциях, совершенных в течение последних 7 дней. Если текущая дата — 02.02.2006, отображаются записи за период с 24 января 2006 по 2 февраля 2006 г.

Содержат дату, которая приходится на текущий месяц

Year([ДатаПродажи]) = Year(Now()) And Month([ДатаПродажи]) = Month(Now())

Записи за текущий месяц. Если текущая дата — 02.02.2006, отображаются записи за февраль 2006 г.

Содержат дату, которая приходится на прошедший месяц

Year([ДатаПродажи])* 12 + DatePart("m", [ДатаПродажи]) = Year(Date())* 12 + DatePart("m", Date()) - 1

Записи за прошлый календарный месяц. Если текущая дата — 02.02.2006, отображаются записи за январь 2006.

Содержат дату, которая приходится на следующий месяц

Year([ДатаПродажи])* 12 + DatePart("m", [ДатаПродажи]) = Year(Date())* 12 + DatePart("m", Date()) + 1

Записи за следующий календарный месяц. Если текущая дата — 02.02.2006, отображаются записи за март 2006 г.

Содержат дату, которая приходится на последние 30 (или 31) день

Between Date( ) And DateAdd("M", -1, Date( ))

Записи о продажах за последний месяц. Если текущая дата — 02.02.2006, отображаются записи за период со 2 января по 2 февраля 2006 г.

Содержат дату, которая приходится на текущий квартал

Year([ДатаПродажи]) = Year(Now()) And DatePart("q", Date()) = DatePart("q", Now())

Записи за текущий квартал. Если текущая дата — 02.02.2006, отображаются записи за первый квартал 2006 г.

Содержат дату, которая приходится на предыдущий квартал

Year([ДатаПродажи])*4+DatePart("q",[ДатаПродажи]) = Year(Date())*4+DatePart("q",Date())- 1

Записи за предыдущий квартал. Если текущая дата — 02.02.2006, отображаются записи за последний квартал 2005 г.

Содержат дату, которая приходится на следующий квартал

Year([ДатаПродажи])*4+DatePart("q",[ДатаПродажи]) = Year(Date())*4+DatePart("q",Date())+1

Записи за следующий квартал. Если текущая дата — 02.02.2006, отображаются записи за второй квартал 2006 г.

Содержат дату, которая приходится на текущий год

Year([ДатаПродажи]) = Year(Date())

Записи за текущий год. Если текущая дата — 02.02.2006, отображаются записи за 2006 год.

Содержат дату, которая приходится на предыдущий год

Year([ДатаПродажи]) = Year(Date()) - 1

Записи об операциях за прошедший год. Если текущая дата — 02.02.2006, отображаются записи за 2005 год.

Содержат дату, которая приходится на следующий год

Year([ДатаПродажи]) = Year(Date()) + 1

Записи об операциях за следующий год. Если текущая дата — 02.02.2006, отображаются записи за 2007 год.

Содержат дату, которая приходится на период от 1 января до текущей даты (записи с начала года до настоящего момента)

Year([ДатаПродажи]) = Year(Date()) and Month([ДатаПродажи]) <= Month(Date()) and Day([ДатаПродажи]) <= Day (Date())

Записи об операциях, совершенных с 1 января текущего года по текущую дату. Если текущая дата — 02.02.2006, отображаются записи за период с 1 января по 2 февраля 2006 г.

Содержат прошедшую дату

< Date()

Записи об операциях, совершенных до наступления текущей даты.

Содержат будущую дату

> Date()

Записи об операциях, совершенных после текущей даты.

Фильтр пустых (или отсутствующих) значений

Is Null

Записи, в которых дата операции отсутствует.

Фильтр непустых значений

Is Not Null

Записи, в которых дата операции указана.

Условия для других полей

Поле типа «Логический»    В строку Условия введите значение Да, чтобы включить в результаты записи, для которых установлен соответствующий флажок. Введите значение Нет, чтобы включить в результаты записи со снятым флажком.

Вложения    В строку Условия введите значение Is Null, чтобы включить в результаты записи без вложений. Введите условие Is Not Null, чтобы включить в результаты записи с вложениями.

Поля подстановок    Существуют два типа полей подстановок: поля, значения для которых извлекаются из существующего источника данных (с помощью внешнего ключа), и поля, которые сформированы на основе списка значений, заданного при создании поля подстановок.

Поля подстановок последнего типа являются текстовыми; к ним можно применять те же условия, что и к другим текстовым полям.

Условия для поля подстановок, которое сформировано на основе значений из существующего источника данных, зависят от типа данных внешнего ключа, а не от типа искомых данных. Предположим, что поле подстановок служит для отображения имени сотрудника; при этом внешний ключ имеет тип данных «Числовой». Поскольку в этом поле хранятся числа, а не текст, для него следует использовать условия, применимые к числам, т. е. >2.

Если тип данных внешнего ключа неизвестен, можно просмотреть источник данных в режиме конструктора, чтобы определить типы данных для полей. Выполните следующие действия.

  1. Найдите исходную таблицу в области переходов.

  2. Откройте таблицу в режиме конструктора, выполнив одно из следующих действий.

  • Выделите таблицу и нажмите сочетание клавиш CTRL+ВВОД

  • Щелкните таблицу правой кнопкой мыши и выберите пунктКонструктор.

  • Типы данных для каждого поля перечислены в столбце Тип данныхбланка таблицы.

    Поля, допускающие несколько значений    Данные такого поля хранятся в виде строк скрытой таблицы, которая создается и заполняется в Office Access 2007 для поля. В режиме конструктора запроса такое поле представлено всписке полей в виде раскрывающегося поля. Чтобы создать условия для поля, допускающего несколько значений, необходимо задать условия для одной строки скрытой таблицы. Для этого необходимо выполнить следующие действия:

    1. Создайте запрос, который содержит поле, допускающее несколько значений, и откройте его в режиме конструктора.

    2. Разверните поле, одновременно допускающее несколько значений, щелкнув знак «плюс» (+) рядом с ним. Если поле развернуто, рядом с ним отображается знак «минус» (-). Непосредственно под именем поля будет отображено поле с отдельным значением. Имя этого поля совпадает с именем поля, допускающего несколько значений, но к нему добавлена строка .Value.

    3. Перетащите поле, одновременно допускающее несколько значений, и поле с отдельным значением в разные столбцы бланка запроса. Если в результаты требуется включить все поле, допускающее несколько значений, снимите флажок Показать для поля с отдельным значением.

    4. В строке Условия для поля с отдельным значением введите условие, соответствующее типу данных выбранного значения.

    5. Каждое значение поля, допускающего несколько значений, будет сравниваться с заданным условием. Например, предположим, что в поле, одновременно допускающем несколько значений, хранится список чисел. Если задано условие >5 AND <3, ему соответствуют все записи, в которых хотя бы одно значение больше 5 и хотя бы одно значение меньше 3.