Самый надежный способ обезопасить таблицу от ввода ошибочных или ложных данных – обеспечить их проверку на соответствие определенным требованиям непосредственно при вводе. Некоторую часть работы по проверке допустимости значений данных программа 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 позволяет задавать проверку значений как на уровне поля, так и на уровне всей таблицы – тогда определенным условиям должны соответствовать значения из ратных полей одной записи.
Условие на значение введенных в поле данных срабатывает при выходе пользователя из поля. К таким условиям могут быть отнесены все те примеры, которые были указаны выше.
Условие на уровне таблицы применяется при сохранении всей записи. Например, в качестве условия на значение для таблицы Выдача товара можно указать выражение: [ДатаВыдачи]>=[ДатаОформления]. Условие на значение записи указывается в области Окно свойств: Свойства таблицы, открыть которую можно в режиме конструктора (вкладка Конструктор), выбрав команду Страница свойств в группе Показать или скрыть (рис. 7).
Рис. 7. Окно Свойства таблицы
Рассмотрим еще один полезный пример, необходимый при работе с базой данных. В таблице Товары для текстового поля Ед_измерения определены только два допустимых значения: кг и шт. Каким образом можно сформулировать условие проверки вводимых в это поле данных? Ограничить набор допустимых значений только двумя элементами можно с помощью следующего условия: "шт" 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!
Обязательное поле – Да
Таблица Выдача товара
Имя поля
Тип данных
Свойства поля
КодТ
Числовой
Размер поля – Длинное целое
Обязательное поле – Да
КодК
Числовой
Размер поля – Длинное целое
Обязательное поле – Да