Проверка вводимых в поле значений
Самый надежный способ обезопасить таблицу от ввода ошибочных или ложных данных – обеспечить их проверку на соответствие определенным требованиям непосредственно при вводе. Некоторую часть работы по проверке допустимости значений данных программа Access выполняет автоматически.
Однако ограничиваться только этими проверками не стоит, и для обеспечения целостности данных следует предусмотреть хотя бы простейшие операции контроля. Эффективнее всего использовать их для числовых, денежных полей и данных типа Дата/время. Характер проверки задается в поле Условие на значение области Свойства поля, и если требования условия на значение не соблюдаются, выдается сообщение об ошибке. Текст такого сообщения можно определить в поле Сообщение об ошибке.
Условие на значение вводится в виде выражения (команды для вычисления значений). В выражениях используются обычные символы арифметических действий: + (сложение), - (вычитание), * (умножение), / (деление). Такие символы называются операторами. Значения, над которыми производятся действия, называются операндами.
Кроме математических, для сравнения числовых величин используются операторы сравнения: > (больше чем), < (меньше чем), = (равно), <> (не равно), <= (меньше или равно) и >= (больше или равно). Для операций с логическими величинами предусмотрены логические операторы, например And, Or, Not. Логические операторы позволяют также соединять атомарные условия, например для числового поля могут быть заданы такие условия, как: >0 (должно быть больше нуля), <>0 (не равно нулю) или >=10 And <=100 (в диапазоне от 10 до 100 включительно). Для текстовых значений существуют оператор конкатенации &, с помощью которого можно объединить несколько строк символе в одну строку, и оператор Like, который проверяет соответствие строкового объекта заданному шаблону.
В выражениях также могут использоваться различные функции, например математические, статистические или получения даты и времени (функция Date()). До и после дат в выражениях ставятся символы #. Вот примеры таких выражений: >=Date() (не ранее сегодняшней даты), >=#01.01.95# And <=Date() (между 1 января 1995 года и сегодняшней датой включительно). Последнее выражение можно записать и в несколько иной форме: Between #01.01.95# And Date(), воспользовавшись другим оператором, Between...And.
Программа Access позволяет задавать проверку значений как на уровне поля, так и на уровне всей таблицы – тогда определенным условиям должны соответствовать значения из ратных полей одной записи.
Условие на значение введенных в поле данных срабатывает при выходе пользователя из поля. К таким условиям могут быть отнесены все те примеры, которые были указаны выше.
Условие на уровне таблицы применяется при сохранении всей записи. Например, в качестве условия на значение для таблицы Выдача товара можно указать выражение: [ДатаВыдачи]>=[ДатаОформления]. Условие на значение записи указывается в области Окно свойств: Свойства таблицы, открыть которую можно в режиме конструктора (вкладка Конструктор), выбрав команду Страница свойств в группе Показать или скрыть (рис. 5).
Рис. 5. Окно Свойства таблицы
Рассмотрим еще один полезный пример, необходимый при работе с базой данных. В таблице Товары для текстового поля Ед_измерения определены только два допустимых значения: кг и шт. Каким образом можно сформулировать условие проверки вводимых в это поле данных? Ограничить набор допустимых значений только двумя элементами можно с помощью следующего условия: "шт" Or "кг". Если набор допустимых значений достаточно большой, то на практике вместо подобного нагромождения операторов Or при условии выбора возможных значений из фиксированного набора используется другой оператор, In. В этом случае в поле Условие на значение указывается следующее выражение: In ("шт";"кг").
Также, ограничить набор допустимых значений можно с помощью свойства Ограничиться списком (вкладка Подстановка). В нем необходимо указать значение Да.
задание
№1. Задайте для каждой таблицы следующие свойства полей:
Таблица Товары
Имя поля |
Тип данных |
Свойства поля |
КодТ |
Счетчик |
Подпись – Код товара |
Наименование |
Текстовый |
Размер поля – 15 Формат поля – > Обязательное поле – Да |
Ед_измерения |
Текстовый |
Условие на значение – In ("шт";"кг") Сообщение об ошибке – Можно лишь шт, кг |
ЦенаПродажи |
Денежный |
Формат поля – Денежный Условие на значение – >0 Сообщение об ошибке – Цена >0! |
Наличие |
Логический |
Формат поля – ;"Имеется"[Синий];"Отсутствует"[Красный] |
Таблица Поставщики
Имя поля |
Тип данных |
Свойства поля |
КодП |
Счетчик |
Подпись – Код поставщика |
Фирма |
Текстовый |
Размер поля – 20 Формат поля – > Обязательное поле – Да |
Адрес |
Текстовый |
Размер поля – 30 |
Телефон |
Текстовый |
Размер поля – 13 Маска ввода – !\(999\)000\-0000;;_ |
Счет |
Текстовый |
Размер поля – 14 Маска ввода – 0000\.000\.00000 |
Таблица Клиенты
Имя поля |
Тип данных |
Свойства поля |
КодК |
Счетчик |
Подпись – Код поставщика |
Фирма |
Текстовый |
Размер поля – 20 Формат поля – > Обязательное поле – Да |
Адрес |
Текстовый |
Размер поля – 30 |
Телефон |
Текстовый |
Размер поля – 13 Маска ввода – !\(999\)000\-0000;;_ |
Счет |
Текстовый |
Размер поля – 14 Маска ввода – 0000\.000\.00000 |
Таблица Поступление товара
Имя поля |
Тип данных |
Свойства поля |
КодТ |
Числовой |
Размер поля – Длинное целое Обязательное поле – Да |
КодП |
Числовой |
Размер поля – Длинное целое Обязательное поле – Да |
Дата |
Дата/время |
Формат поля – Средний формат даты Значение по умолчанию – =Date() |
Количество_товара |
Числовой |
Размер поля – Длинное целое Условие на значение – >0 Сообщение об ошибке – Ошибка ввода! Обязательное поле – Да |
ЦенаПоставки |
Денежный |
Формат поля - # ##0,00" руб." Условие на значение – >0 Сообщение об ошибке – Цена >0! Обязательное поле – Да |
Таблица Выдача товара
Имя поля |
Тип данных |
Свойства поля |
КодТ |
Числовой |
Размер поля – Длинное целое Обязательное поле – Да |
КодК |
Числовой |
Размер поля – Длинное целое Обязательное поле – Да |
ДатаОформления |
Дата/время |
Формат поля – ddd", "dd\ mmm", "yyyy |
ДатаВыдачи |
Дата/время |
Формат поля – ddd", "dd\ mmm", "yyyy Маска ввода - 00\->L<LL\-0000;0;_ |
Количество_товара |
Числовой |
Размер поля – Длинное целое Условие на значение – >0 Сообщение об ошибке – Ошибка ввода! Обязательное поле – Да |
СостояниеЗаказа |
Числовой |
Источник строк - 1; "Оформляется"; 2; "Обрабатывается";3;"Выполнен" |
№2. Задайте условие на значение для таблицы Выдача товаров: [ДатаВыдачи]>=[ДатаОформления].
№3. Заполните все таблицы данными (не менее 10 записей в каждой).