Запись условия на значение поля

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

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

 

Примечание

Программа Access применяет правило верификации, только если в поле есть данные. Если поле остается пустым, программа принимает его без всякой проверки. Если вам не нравится такой подход, задайте в свойстве Обязательное поле значение Да, чтобы добиться обязательного заполнения поля, как описано в разд. "Запрет незаполненных полей" ранее в этой главе.

 

 

Проверка допустимости числовых значений

Для числовых данных самый распространенный вариант проверки — принадлежность введенного значения определенному диапазону. Другими словами, вы проверяете, больше или меньше введенное число другого значения. Ваши инструменты в этом случае — знаки операций сравнения < и >. В табл. 4.4 приведено несколько часто используемых примеров.

Таблица 4.4. Условия на значение для чисел

Сравнение

Пример условия

Описание

Меньше чем

<100

Значение должно быть меньше 100

Больше чем

>0

Значение должно быть больше 0

Не равно

< >42

Значение может быть любым, но не равным 42

Меньше или равно

<=100

Значение должно быть не больше 100

Больше или равно

 

Значение должно быть не меньше 0

Равно

=42

Значение должно быть 42. (Много ли смысла в необходимости ввода этого значения кем-то?)

Между

Between 0 and 100

Значение должно быть 0,100 или любое промежуточное значение

 

 

Проверка допустимости дат

Как и в случае числовых данных, проверка допустимости дат, как правило, включает проверку принадлежности даты определенному диапазону. Ваша задача — убедиться в том, что у вашей даты формат, подходящий для условия на значение. Если вы используете условие >Jan 30, 2007 (> 30 Янв, 2007), программа Access приходит в крайнее замешательство, т. к. не понимает, что текст (Jan 30, 2 007) предназначается для представления даты. Точно так же, если вы проверяете условие >1/30/07, Access предполагает, что числа справа от знака сравнения — часть выражения с последовательными операциями деления.

Для решения этой проблемы используйте универсальную синтаксическую форму представления дат программы Access, которая выглядит следующим образом: #1/30/2007#

В универсальную синтаксическую запись для представления дат компоненты включаются в порядке месяц/день/год и обрамляются с обеих сторон символами #. С помощью этого синтаксиса вы можете использовать условие, такое как >#1/30/2007#, требующее, чтобы

 

вводимая дата была больше (наступала позже), чем January 30, 2007 (30 января 2007 January 31, 2007 отвечает данному требованию, а любая дата в 2006 г. — нет.

Универсальная синтаксическая запись может включать и время, например: #1/30/2007   5:30РМ#

 

 

Примечание

При сравнении двух дат программа Access принимает во внимание сведения о времени. Дата #1/30/2007# не содержит данных о времени, поэтому она интерпретируется как наступившая в самую первую секунду суток. В результате Access считает, что значение #1/30/2007  8:00  АМ# больше, поскольку наступает на 8 часов позже.

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

¦  Date ( ) — вычисляет текущую дату (без какой-либо информации о времени, поэтому она
вычисляется как первая секунда текущего дня);

¦  Now ( ) — вычисляет текущий момент времени, включая дату и время.

 

 

Примечание

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

В табл. 4.5 приведено несколько примеров.

 

Таблица 4.5. Условия на значения для дат

Сравнение

Пример условия

Описание

Меньше чем

<#1/30/2007#

Дата до 30 января 2007 г.

Больше чем

>#1/30/2007   5:30   РМ#

Любая дата после 30 января 2007 г., или 30 января 2007 г. после 17:30

Меньше или равна

<=#1/30/2007#

Дата до 30 января 2007 г. или первая секунда 30 января 2007 г.

Больше или равна

>=#1/30/2007#

30 января 2007 г. или любая более поздняя дата

Больше текущей даты

>Date()

Сегодня или более поздняя дата

Меньше текущей даты

<Date()

Вчера или более ранняя дата

Больше текущей даты (и времени)

>Now()

Сегодня после текущего времени или любая дата в будущем

Меньше текущей даты (и времени)

<Now ()

Сегодня до настоящего момента или любая дата в прошлом

 

Проверка допустимости текста

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

Следующее условие требует начинать поле с буквы "R":

Like  "R*"

Звездочка обозначает отсутствие символов или присутствие нескольких символов. Таким образом, полное условие заставляет программу Access проверять, начинается ли строка с буквы "R" (или "r"), за которой могут следовать символы или нет.

Очень похожее условие можно применять для проверки завершающих символов фрагмента текста:

Like   "*ed"

Это условие считает корректными значения talked, walked и 34z%($)#ed и не пропускает значения talking, walkable или 34z%($)#.

Не столь распространенный прием — использование нескольких звездочек. В следующем выражении требуется наличие букв "а" и "b" (именно в таком порядке, но не обязательно сразу друг за другом) в любом месте строки текста:

Like  "*а*b*"

Наряду со звездочкой в операторе Like могут использоваться и некоторые другие символы. Можно применять ?, соответствующий единичному символу, что очень удобно, если известна длина текста или позиция определенной буквы в тексте. Далее приведено условие на значение для восьмисимвольного кода изделия, заканчивающегося 0ZB:

Like "?????0ZB"

У символа # аналогичная роль, но он представляет цифру. Таким образом, следующее правило верификации определяет код изделия, заканчивающийся комбинацией символов 0ZB, которой предшествует пять цифр:

Like  "#####0ZB"

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

Предположим, что ваша компания использует восьмисимвольный код изделия, который всегда начинается с "А" или "Е". Далее приведено необходимое условие на значение:

Like  "[АЕ]???????"

Обратите внимание на то, что фрагмент [АЕ] представляет один символ, который может принимать значение А или Е. Если вы хотите разрешить символы А, В, С, D, следует написать в условии [ABCD] или воспользоваться удобной сокращенной формой [A-D], означающей разрешение любого символа от А до D, включая А и D.

Далее приведено условие на значение, разрешающее ввод семибуквенного слова и запрещающего цифры и другие символы. Оно формируется семикратным повторением кода [A- Z] (который разрешает любую букву).

Like   [A-Z] [A-Z] [A-Z] [A-Z] [A-Z] [A-Z] [A-Z]

 

Как видите, условия на текстовые значения не всегда приятны для глаз. Они не только могут разрастаться до неимоверных размеров, но и не могут задать многих ограничений. Например, невозможно задать допустимое изменение длины текста между заданными максимумом и минимумом. Невозможно также различать строчные и прописные буквы.

 

 

Примечание

Множество подобных ограничений можно обойти, применяя некоторые функции, предоставляемые программой Access. В разд. "Текстовые функции" главы 7 вы узнаете, как с помощью функций вырезать фрагменты текста, проверять длину строки, использовать прописные буквы в тексте и многое другое.

 

 

 

Комбинирование условий на значения

 

Независимо от типа данных вы можете комбинировать ваши условия двумя способами. Используя ключевое слово And, можно создать правило верификации, содержащее два условия. Этот прием очень полезен, т. к. у поля может быть только одно условие на значение.

Для использования ключевого слова And просто запишите два правила верификации и вставьте между ними слово And. Неважно, какое правило вы укажете первым. Далее приведено условие на значение даты, которая должна была наступить до текущей даты, но после 1 января 2000 г.:

<Date( )   And >#l/l/2000#

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

>1000 Or < -1000

 

 

Создание условия на значение для таблицы

Условия на значения всегда применяются к отдельному полю. Но проектировщики БД часто нуждаются в средствах сравнения значений разных полей. Предположим, что у вас есть таблица Orders (заказы), в которой регистрируются покупки в вашем магазине по продаже фирменных носков с монограммой. В таблице Orders вы используете два поля: DateOrdered (дата заказа) и DateShipped (дата доставки). Для того чтобы все было как следует, необходимо, чтобы дата из поля DateOrdered была более ранней, чем дата из поля DateShipped. Помимо всего прочего, как доставить изделие, прежде чем кто-то его закажет?

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

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

1.   В Конструкторе выберите на ленте Работа с таблицами | Конструктор > Показать или скрыть > Страница свойств (Table Tools | Design > Show/Hide > Property Sheet).

Справа в окне программы появляется страница с дополнительными параметрами (рис. 4.16).

 

Примечание

Для таблицы можно создать только одно правило верификации. Это ограничение может показаться проблемой, но ее легко обойти с помощью ключевого слова And (см. разд. "Комбинирование условий на значения" ранее в этой главе) и объединения того количества условий, которое вам нужно. Правило верификации может быть трудным для чтения, но при этом работать без сбоев.

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

 

2.   На вкладке Свойства таблицы задайте Условие на значение.

В условии на значение для таблицы можно использовать все уже известные вам ключевые слова. Обычно в условии для таблицы сравнивается несколько полей. Условие на значение [DateOrdered] < [DateShipped] гарантирует, что в ноле DateOrdered более ранняя дата, чем используемая в поле DateShipped.

При ссылке на поле в условии на значение для таблицы имена полей следует заключать в квадратные скобки. Таким образом, программа Access может установить разницу межу полями и функциями (например, функцией Date ( ), о которой вы узнали в разд. "Задание значений по умолчанию "далее в этой главе).

3.   Задайте текст Сообщения об ошибке.

Это сообщение об ошибке выводится на экран, если условие не выполняется. Оно аналогично сообщению об ошибке для условия на значение поля.

 

Когда вставляется новая запись программа Access сначала проверяет условия на значения поля. Если данные успешно проходят проверку (и у них правильные типы), Access проверяет условие на значение для таблицы.

 

 

Подсказка

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

 

 

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

1 комментарий »

 
  • Даниил says:

    Спасиболо большое за статью очень помогла с условие на значение для всей таблици

 

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100