Краткое содержание 29 Об этих стрелках 30 о сочетаниях клавиш 32 о щелчках кнопкой мыши 33 Примеры 33
Скачать 19.64 Mb.
|
Таблица 4.2. Символы-заполнители для масок ввода
Таблица 4.3. Специальные символы для масок ввода
Далее приведено несколько примеров масок, чтобы помочь вам взяться за дело.
пожалуется на то, что не может преобразовать ваше значение в тип данных Дата/время, как того требует поле.)
Маски могут заканчиваться двумя необязательными элементами, разделенными точкой с запятой (;). Вторая составляющая маски — число, сообщающее программе Access, должна ли она сохранять литеральные символы маски в записи БД. (Это последний вопрос, который задает Мастер создания масок.) Если этот фрагмент маски пропустить или использовать цифру 1, Access сохраняет только символы, которые вводит пользователь. Если же вы примените цифру 0, программа сохранит весь текст вместе с литералами. В третьей составляющей маски содержится символ-заполнитель. Если этот компонент маски пропустить, программа Access применяет знакомый знак подчеркивания. Д алее приведена маска, в которую включены оба дополнительных компонента: (000) 000-000;1;# Во второй части стоит 1, а в третей — #. Маска предназначена для ввода телефонных номеров и сохранения их в БД вместе с литералами маски (в данном случае двумя скобками, пробелом и дефисом), в ней вместо знака подчеркивания в качестве заполнителя используется знак номера (#). Рис. 4.13. Для добавления вашей собственной маски используйте кнопки переходов между записями (расположенные у нижнего края этого окна) для перехода в конец. Это окно можно использовать и для изменения маски. Например, встроенная маска телефонного номера не требует обязательного включения междугороднего кода. Если это свобода, которой вы не хотите пользоваться, замените маску более строгой версией (000) 000-0000 Практические занятия для опытных пользователей. Вставка вашей маски в список масок программы Иногда удается создать маску, которая невероятно полезна, и хочется ее использовать в разных таблицах вашей БД (а может быть, и в разных БД). Несмотря па то, что можно скопировать маску в каждое поле, которое нуждается в ней, у программы 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?" — "Вы ведь не получили ее даром, не так ли?"). После щелчка мышью по кнопке ОК вы возвращаетесь в поле, которое остается в режиме редактирования. У вас есть возможность изменить значение на положительное или нажать клавишу Примечание Наличие у вашей таблицы правил верификации или условий на значения вовсе не означает, что данные в этой таблице следуют заданным правилам. Отклонения могут возникнуть, если вы ввели данные прежде, чем правила верификации начали действовать. (Вы уже знаете об аналогичной потенциальной проблеме, связанной с обязательными полями, описанной в разд. "Запрет незаполненных полей" ранее в этой главе) Запись условия на значение поля Как видите, применять условие на значение к полю достаточно легко. Но формирование правила требует больших умственных усилий. Для получения желаемого результата вы должны сделать первый шаг в порой причудливый мир языка SQL. Несмотря на то, что условия на значения ограничены только вашим воображением, разработчики, профессионально работающие о программе Access, возвращаются к нескольким основным шаблонам снова и снова. В следующих разделах представлены базовые знания для быстрой и легкой разработки правил верификации данных разных типов. Примечание Программа Access применяет правило верификации, только если в поле есть данные. Если поле остается пустым, программа принимает его без всякой проверки. Если вам не нравится такой подход, задайте в свойстве Обязательное поле значение Да, чтобы добиться обязательного заполнения поля, как описано в разд. "Запрет незаполненных полей" ранее в этой главе. Проверка допустимости числовых значений Для числовых данных самый распространенный вариант проверки — принадлежность введенного значения определенному диапазону. Другими словами, вы проверяете, больше или меньше введенное число другого значения. Ваши инструменты в этом случае — знаки операций сравнения < и >. В табл. 4.4 приведено несколько часто используемых примеров. Таблица 4.4. Условия на значение для чисел
Проверка допустимости дат Как и в случае числовых данных, проверка допустимости дат, как правило, включает проверку принадлежности даты определенному диапазону. Ваша задача — убедиться в том, что у вашей даты формат, подходящий для условия на значение. Если вы используете условие >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 часов позже. Теперь, зная об универсальной синтаксической записи для дат, вы можете использовать любые операции сравнения, которые применяются для сравнения чисел. Можно применять и следующие удобные функции для получения информации о текущих дате и времени:
Примечание Функция — это встроенная процедура, выполняющая какую-либо задачу, например считывание текущей даты с компьютерных часов. В разд. "Функции для обработки дат" главы 7 вы познакомитесь со многими функциями обработки дат, которые позволят вам выполнить более сложные задачи, например, определять день недели для конкретной даты. В табл. 4.5 приведено несколько примеров. Таблица 4.5. Условия на значения для дат
Проверка допустимости текста В случае текста условие на значение позволяет задать начальный или конечный символ текста или наличие определенных символов в строке. Все эти задачи решаются с помощью оператора 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 г.: Можно также использовать ключевое слово 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.
Подстановки применяются чаще всего для данных Текстового и Числового типов.
В следующем окне Создание подстановки вы можете ввести список значений, которые следует использовать по одному в каждой строке (рис. 4.18). В данном случае вводится список сокращенных названий 50 американских штатов. Как вы могли заметить, в списке можно заполнить несколько столбцов данных. Пока ограничимся одним столбцом. Вы узнаете, зачем использовать несколько, разд. "Поиск в связанных таблицах" главы 5. Р ис. 4.17. Сначала вы выбираете источник для ваших подстановок: константы или данные из другой таблицы Р ис. 4.18. Этот список подстановок содержит сокращенные названия всех американских штатов. Он вряд ли будет меняться в ближайшем будущем, поэтому безопаснее хранить его как набор констант, а не в другой таблице 7. Щелкните мышью кнопку Далее. На экране появляется последнее окно мастера Создание подстановки. 8. Укажите, можно ли хранить в столбце подстановки множественные значения. Если вы разрешили наличие множественных значений, список подстановок отобразит флажок рядом с каждым элементом. Вы сможете выбрать несколько значений для одной записи, установив несколько флажков. В поле State нет смысла разрешать множественные значения — помимо всего прочего физически человек может обитать только в одном штате (не принимая во внимание квантовую телепортацию). Но можно придумать примеры, в которых наличие множественных значений вполне оправданно. Например, в таблице Products, используемой компанией International Cinnamon, подстановка множественных значений позволила бы нам сформировать заказ нескольких изделий. (Вы узнаете больше о выборе нескольких значений и связях между таблицами в главе 5.) 9. Щелкните мышью кнопку Готово. Перейдите в Режим таблицы (щелкните правой кнопкой мыши заголовок вкладки и выберите Режим таблицы) и сохраните изменения. На рис. 4.19 показана подстановка в действии. Рис. 4.19. Когда вы перейдете в поле со списком подстановок, то справа увидите стрелку, направленную вниз. Щелкните ее кнопкой мыши, и на экране появится раскрывающийся список со всеми введенными вами вариантами. Выберите один из них для вставки в поле На профессиональном уровне. Создание списка подстановки, использующего другую таблицу В предыдущем примере (см. начало данного раздела) был создан список подстановок, сохранявшийся как один из параметров поля. Это хороший подход, но не лучшее решение. Гораздо эффективнее хранить список подстановок в отдельной таблице. Далее приведено несколько доводов в пользу применения отдельной таблицы.
Списки подстановок в виде таблиц немного сложнее, поскольку они включают связь таблицы — ссылку, объединяющую две таблицы вместе и (иногда) порождающую новые ограничения. Глава 5 полностью посвящена связям таблиц, служащих ключевым компонентом любой применяемой на практике БД. Добавление новых значений в ваш список подстановок Когда создается подстановка, использующая константы, список предоставляет лишь перечень предложений. Вы можете игнорировать список подстановок и ввести совершенно другое значение (например, префикс штата ZI), даже если его нет в списке. Такой подход позволяет применять список подстановок как удобное экономящее время средство, которое при этом не ограничивает ваш выбор. В большинстве случаев такая гибкость даже мешает. В таблице Bachelors вы, возможно, хотите помешать людям вводить в поле State что-либо, отличное от предлагаемого списка. В этой ситуации хотелось бы, чтобы список подстановок был так же средством проверки ошибок и верификации, препятствующим вводу посторонних значений. К счастью, несмотря на то, что в Мастере создания подстановки такая возможность по непонятным причинам отсутствует, достаточно легко ее добавить после создания списка. Выполните следующие действия.
На вкладке Подстановка представлены параметры для тонкой настройки вашего списка подстановки, большинство из которых легче задать в Мастере создания подстановки. В поле Источник строк (Row Source), например, можно откорректировать список предлагаемых вами значений. (Все значения расположены в одной строке, заключены в кавычки и отделяются друг от друга точкой с запятой.) 3. Задайте значение Да в поле Ограничиться списком (Limit to List). Это действие защитит вас от ввода значений, не включенных в список. 1 . Можете выбрать значение Да в поле Разрешить изменение списка значений (Value List Edits). Это действие позволит корректировать значения списка в любое время. Если в списке подстановок что-то пропущено, вы можете вставить новое значение на лету (рис. 4.20). Рис. 4.20. Если задать значение поля Разрешить изменение списка значений, равным Да, во время применения списка подстановок появится пиктограмма (слева). Щелкните ее кнопкой мыши, и на экране откроется диалоговое окно Изменение элементов списков (справа), в котором можно откорректировать значения из списка подстановок и изменить значение по умолчанию |