Проверка данных с помощью условий

Многие гуру программы Access применяют макросы для предотвращения некорректного редактирования и других подозрительных операций над данными (например, вставок и уда­лений). Теперь, когда вы понимаете, как написать условие, вы сможете легко разработать проверочную логику такого сорта.

Примечание

Проверка данных с помощью условий - student2.ru
Как известно из главы 4, у программы Access есть несколько средств, способных помочь за­щитить данные в вашей таблице, включая маски ввода, условия на значения и подстановки. Следует всегда пытаться применить эти средства прежде, чем обращаться к макрокодирова­нию. Однако существует много типов ошибок, требующих применения макросов. Один общий пример — корректность одного поля, зависящая от значения другого поля.

Первый шаг — реагировать на подходящие события — главным образом события формы До вставки, До обновленияи До подтверждения.Когда они возникают, можно выполнить условия и найти среди них ошибочные. Если вы видите что-то, что вам не нравится, исполь­зуйте команду ОтменитьСобытие(CancelEvent) для полного прерывания процесса и, таким образом, отмены операции вставки, обновления или удаления.

Рис. 15.21.Когда устанавливается флажок Please notify me about special offers(Пожалуйста, сообщайте мне о специальных предложениях), в поле WantsEmailустанавливается значение Да. Но у этой записи есть проблема — в поле Email нет значения

Примечание

У команды ОтменитьСобытиенет аргументов — она просто прерывает выполняющийся в данный момент процесс. ОтменитьСобытиеработает с любым событием, начинающимся со слова "До" ("Before"), что означает готовность реальной операции к выполнению, но еще не са­мо ее выполнение.

Допустим, вы хотите создать простое условие, которое останавливает обновление опре­деленной записи. Рассмотрите форму, показанную на рис. 15.21.

В данном примере пропущенный электронный адрес вызывает серьезную головную боль. Эту проблему можно решить, сделав поле EmailAddressобязательным, но вы хотите на самом деле нечто более замысловатое. Когда WantsEmailравно Да, поле EmailAddressне должно быть пустым. С помощью макроса с условием можно реализовать именно эту

логику.

Вам понадобится следующее логическое условие:

WantsEmail = Yes And IsNull ( [EmailAddress] )

Это условие возвращает значение Истина, если WantsEmailравно Да и EmailAddressпусто. Когда это выполняется, самое время отменить обновление с помощью макрокоманды ОтменитьСобытие.

Примечание

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

Когда событие отменяется, оно не выполняет откат всех изменений. Отмена события лишь мешает завершению операции. Если изменяется запись и делается попытка перейти к другой записи, возникает событие До обновления(Before Update). Если макрос отменяет это событие, программа Access запрещает переходить к другой записи и оставляет вас на прежнем месте. Но текущая запись остается в режиме редактирования со всеми отредакти­рованными значениями. Ваше дело устранить проблему или нажать клавишу <Esc> для полного отказа от попытки обновления.

Условная макрокоманда ОтменитьСобытие— сердцевина многих проверочных макро­сов. Но вам нужен еще один завершающий штрих: сообщение об ошибке. Иначе пользова­тель, выполняющий обновление, не догадается, в чем дело. Он будет склонен считать, что Access совсем слетела с катушек.

Для отображения сообщения об ошибке можно использовать макрокоманду Сообщение(MsgBox). Понятно, что вы хотите выводить сообщение об ошибке, только если ошибка дей­ствительно возникает, поэтому команды Отменитьсобытиеи Сообщениедолжны включать условия.

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

На рис. 15.22 показан законченный макрос, а на рис. 15.23 — выполняющийся макрос.

 
  Проверка данных с помощью условий - student2.ru

 
  Проверка данных с помощью условий - student2.ru

Рис. 15.22.Этот макрос состоит из двух макрокоманд с условием. Для блокировки некорректных данных присоедините его к событиям До обновленияи До вставки

Рис. 15.23.Макрос находит пропущенный электронный адрес и поясняет возникшую проблему

Наши рекомендации