Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access_2007.doc
Скачиваний:
257
Добавлен:
17.03.2015
Размер:
20.6 Mб
Скачать

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

Иногда удается создать маску, которая невероятно полезна, и хочется ее использовать в разных таблицах вашей БД (а может быть, и в разных БД). Несмотря па то, что можно скопировать маску в каждое поле, которое нуждается в ней, у программы Access есть бо­лее удачное средство — можно хранить вашу маску в списке масок программы. В этом случае маска будет появляться, как только вы запустите Мастер создания масок, рядом с другими стандартными масками ввода программы Access.

Для вставки маски в список перейдите к свойству поля Маска ввода (любого поля) и щелкните мышью кнопку со скругленными углами для запуска Мастера создания масок. Затем щелкните мышью кнопку Список (Edit List), раскрывающую удобное окно, в ко­тором можно редактировать маски, предоставляемые Access, и вставить собственную (рис. 4.13).

Правила верификации или условия на значения

Маски ввода — замечательное средство, но они применяются лишь с информацией несколь­ких определенных типов, обычно с тестом фиксированной длины, имеющим единственный неизменный шаблон. Для создания действительно "пуленепробиваемой" таблицы следует применять более сложные ограничения, такие как гарантия попадания числа в определен­ный диапазон, проверка еще не наступивших дат или первой буквы текста. Правила верифи­кации или условия на значения могут помочь вам сформировать все эти ограничения, ис­пользуя всю мощь языка SQL (Structured Query Language, язык структурированных запросов).

Примечание

Более полное введение в язык SQL начнется с главы 6. К счастью, для написания правила ве­рификации вам понадобится лишь частичка SQL. Ключевая составляющая правила — выра­жение проверки правильности данных (validation expression) вы увидите несколько практиче­ских примеров таких выражений, которые можно сразу поместить в ваши таблицы.

Суть правила верификации проста. Вы задаете ограничение, сообщающее программе Access, какие значения разрешены в поле, а какие нельзя считать правильными. Когда кто-нибудь добавляет новую запись или редактирует имеющуюся, Access проверяет, удовлетво­ряют ли данные вашим условиям на значения. Если нет, программа выводит сообщение об ошибке и заставляет вас откорректировать ошибочные данные и попробовать еще раз.

Применение условия на значение поля

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

Для вставки вашего условия на значение выполните следующие действия.

1. В Конструкторе выберите поле, к которому хотите применить условие.

Данные всех типов, кроме Поле MEMO, Счетчик и Объект OLE, поддерживают условие на значение. В данном примере правило верификации обрабатывает числовые данные (Числового или Денежного типа).

2. В свойстве поля Условие на значение (Validation Rule) введите проверочное выражение (рис. 4.14).

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

Рис. 4.14. В данном примере свойство Условие на значение препятствует вводу недопустимых цен, а свойство Сообщение об ошибке содержит текст сообщения

3. Введите текст сообщения в свойство поля Сообщение об ошибке (Validation Text).

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

4. Щелкните правой кнопкой мыши заголовок вкладки и выберите Режим таблицы.

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

После перехода в Режим таблицы вы готовы к тестированию вашего условия на значе­ние (рис. 4.15).

Рис.4.15. В данном примере условие на значение >0 препятствует вводу отрицательных чисел в поле Price. Когда вы вводите отрицательное число, Access выводит окно сообщения с текстом об ошибке, который вы задали ("You didn’t get this for free, did you?" — "Вы ведь не получили ее даром, не так ли?"). После щелчка мышью по кнопке ОК вы возвращаетесь в поле, которое остается в режиме редактирования. У вас есть возможность изменить значение на положительное или нажать клавишу <Esc> для отказа от вставки или редактирования записи

Примечание

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

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

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

Подсказка

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

Подстановки

В БД даже незначительные вариации могут создавать большие неприятности. Допустим, вы управляете компанией International Cinnamon, пекарней многонациональной сети, выпус­кающей булочки с корицей и имеющей сотни заказов в день. В таблице Orders у вас есть следующие записи:

Quantity (количество) Product (изделие) 10 Frosted Cinnamon Buns

24 Cinnamon Buns with Icing

16 Buns, Cinnamon (Frosted)

120 FCBs

(В данном примере другие поля, такие как столбец Код и сведения о клиенте, сделавшем заказ, опущены.)

Все заказы, приведенные в таблице, означают одно и то же: различные количества вкус­ных, покрытых сахарной глазурью булочек с корицей, Но текст в столбце Product слегка отличается. Эти отличия не создают проблем для простых смертных (например, вы без тру­да выполните эти заказы), если вы захотите в дальнейшем проанализировать характеристи­ку реализации (sales performance), возникнут неприятности. У вас не будет возможности сообщить программе Access о том, что Frosted Cinnamon Bun и FCB — одно и то же, булочка с корицей, программа считает их разными изделиями. Если вы попытаетесь подсчитать наи­более популярные изделия или проверить долгосрочные тренды объемов продаж, у вас ни­чего не выйдет.

Примечание

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

Подстановки — еще одно средство, позволяющее стандартизировать ваши данные. Под­становки, в первую очередь, позволяют вставить значение в поле из подготовленного списка возможных вариантов. При надлежащем применении это средство решает проблему, воз­никшую в таблице Orders, — вам просто нужна подстановка, включающая все виды изделий, которые вы продаете. В этом случае вместо набора вручную названия изделия вы можете выбрать из списка Frosted Cinnamon Buns (глазированные булочки с корицей). Вы не только

экономите время, но и избегаете таких названий, как FCB, тем самым гарантируя непро­тиворечивость списка заказов.

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

Примечание

Подстановки не поддерживают следующие типы данных: Поле MEMO, Дата/время, Денеж­ный, Счетчик, Логический, Объект OLE, Гиперссылка и Вложение.

Создание простого списка подстановок, состоящего из констант

Простые списки подстановок имеют смысл, если у вас короткий простой список, не нуж­дающийся в частых корректировках. Отличным примером может служить список префик­сов в адресе, обозначающих штаты. В данном случае это набор 50 двухбуквенных сокраще­ний (AL, AK, AZ и т. д.).

Для опробования процесса создания списка, состоящего из перечисленных далее дейст­вий, можно воспользоваться таблицей Bachelors (холостяки), входящей в примеры к дан­ной главе, размещенные в Интернете (см. файл БД DatingService.accdb). Можно перейти непосредственно к конечному результату, просмотрев файл DatingServiceLookup.accdb.

1. Откройте таблицу в Конструкторе.

Если вы используете файл DatingService.accdb, откройте таблицу Bachelors.

  1. Найдите поле, в которое нужно вставить список подстановок. В таблице Bachelors это поле State.

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

Подстановки применяются чаще всего для данных Текстового и Числового типов.

  1. Выберите в списке типов данных Мастер подстановок. Это действие на самом деле не изменяет заданный тип данных. Оно лишь сообщает программе Access о том, что вы хотите запустить мастер Создание подстановки, базирующийся на текущем типе данных. Как только выбран описанный вариант, на экране появляется окно мастера Создание подстановки (рис. 4.17).

  2. Выберите переключатель Будет введен фиксированный набор значений (I will type in the values that I want). В разд. "Поиск в связанных таблицах" главы 5 описывается другой вариант: список подстановок из другой таблицы.

  3. Щелкните мышью кнопку Далее.

В следующем окне Создание подстановки вы можете ввести список значений, которые следует использовать по одному в каждой строке (рис. 4.18). В данном случае вводится список сокращенных названий 50 американских штатов.

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

Рис. 4.17. Сначала вы выбираете источник для ваших подстановок: константы или данные из другой таблицы

Рис. 4.18. Этот список подстановок содержит сокращенные названия всех американских штатов. Он вряд ли будет меняться в ближайшем будущем, поэтому безопаснее хранить его как набор констант, а не в другой таблице

7. Щелкните мышью кнопку Далее.

На экране появляется последнее окно мастера Создание подстановки.

8. Укажите, можно ли хранить в столбце подстановки множественные значения.

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

ВполеState нет смысла разрешать множественные значения — помимо всего прочего физически человек может обитать только в одном штате (не принимая во внимание квантовую телепортацию). Но можно придумать примеры, в которых наличие множест­венных значений вполне оправданно. Например, в таблице Products, используемой ком­панией International Cinnamon, подстановка множественных значений позволила бы нам сформировать заказ нескольких изделий. (Вы узнаете больше о выборе нескольких зна­чений и связях между таблицами в главе 5.)

9. Щелкните мышью кнопку Готово.

Перейдите в Режим таблицы (щелкните правой кнопкой мыши заголовок вкладки и вы­берите Режим таблицы) и сохраните изменения. На рис. 4.19 показана подстановка в действии.

Рис. 4.19. Когда вы перейдете в поле со списком подстановок, то справа увидите стрелку, направленную вниз. Щелкните ее кнопкой мыши, и на экране появится раскрывающийся список со всеми введенными вами вариантами. Выберите один из них для вставки в поле

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]