Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

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

 

 



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 396; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.2.87 (0.007 с.)