506 Глава 9

окне Редактора Полей требуемое поле. Для числовых полей имеются свойства Min-
Value и Мах Value, устанавливающие допустимые пределы вводимых в поле зна-
чений. Например, если вам требуется принимать на работу сотрудником только в
узком возрастном диапазоне, вы можете для поля Year_b установить ограничения
Min Value = 1970 и MaxValue = 1980. Эти ограничения не скажутся на отображае-
мых данных. Но при нарушении этих пределов в процессе редактирования записи
или в новой записи будет генерироваться исключение. В результате пользователь
увидит сообщение вида, приведенного на рис. 5.29. Вряд ли подобное сообщение
на английском языке порадует пользователя. Поэтому лучше перехватить исклю-
чение на уровне приложения (см. раздел 4.9.3.2 главы 4) и выдать пользователю
понятное пояснение по-русски.

Рис. 5.29

Сообщение о выходе значения поля за
допустимые пределы при использовании
свойств MinValue и MaxValue

Другая возможность ограничения — использование свойств CustomConstraint
и ConstraintErrorMessage. Свойство CustomConstraint позволяет написать огра-
ничение на значение поля в виде строки SQL (см. раздел 10.1). Например, для того
же поля Year_b вы можете написать в свойстве CustomConstraint:

Х < I960 and X > 1970

Имя поля (в данном выражении оно обозначено как X) может быть произволь-
ным.

Если вы задали свойство CustomConstraint, то необходимо задать и свойство
ConstraintErrorMessage. Оно содержит строку текста, который будет показан по
льзователю в случае, если он вводит данные, не удовлетворяющие поставленным
ограничениям. Например, «Возраст претендента на должность не подходит» (см.
рис. 5.30, на котором показано окно с этим сообщением). Таким образом, этот ва-
риант обычно много удобнее задания MinValue и MaxValue, поскольку не требует
перехвата исключений. К тому же он может применяться не только к числовым
полям.

Рис. 5.30

Сообщение о выходе значения поля за допустимые
пределы при использовании свойств
CustomConstraint и ConstraintErrorMessage

Еще одна возможность проверять данные на уровне поля — использовать обра-
ботку события поля On Validate. Это событие возникает перед записью введенного
значения поля в буфер текущей записи. Тут можно предусмотреть любые провер-
ки, при появлении недопустимых данных выдать пользователю сообщение и, на-
пример, сгенерировать исключение EAbort функцией Abort. Если все нормально,
то после события OnValidate возникает еще событие OnChange, в обработчике ко-
торого тоже еще не поздно сгенерировать исключение.

Описанные выше способы проверки данных относятся к конкретному полю.
Имеется также возможность осуществлять проверку на уровне записи, анализируя
различные ее поля. Для этого служит свойство Constraints компонента Table. На-
жмите кнопку в этом свойстве, и перед вами откроется окно, представленное на
рис. 9.31. Щелкая в нем на кнопке Add New (крайняя левая) вы можете занести в
свойство Constraints набор ограничений. Каждое из них представляет собой само-