Событие CheckBox.BeforeUpdate (Access)

Событие BeforeUpdate возникает перед обновлением измененных данных в элементе управления или записи.

Синтаксис

expression. BeforeUpdate (Cancel)

Выражение Переменная, представляющая объект CheckBox .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Отмена Обязательный Integer Параметр определяет, возникает ли событие BeforeUpdate . Если для аргумента Cancel задано значение True (1), событие BeforeUpdate будет отменено .

Замечания

Изменение данных в элементе управления с помощью Visual Basic или макроса, содержащего действие SetValue, не активирует эти события для элемента управления. Однако при переходе к другой записи или сохранении записи возникает событие BeforeUpdate формы.

Чтобы выполнить макрос или процедуру события при возникновении этого события, задайте для свойства BeforeUpdate имя макроса или [Процедура события].

Это событие не применяется к кнопкам параметров, флажкам или переключателям в группе параметров. Он применяется только к самой группе параметров.

Событие BeforeUpdate активируется при обновлении элемента управления или записи. В записи измененные данные в каждом элементе управления обновляются, когда элемент управления теряет фокус или когда пользователь нажимает клавишу ВВОД или TAB. Когда фокус покидает запись или пользователь нажимает кнопку Сохранить запись в меню Записи , вся запись обновляется, а данные сохраняются в базе данных.

При вводе новых или измененных данных в элементе управления в форме, а затем переходе к другой записи или сохранении записи путем нажатия кнопки Сохранить запись в меню Записи событие AfterUpdate для формы возникает сразу после события AfterUpdate для элемента управления .

При переходе на другую запись возникают события Exit и LostFocus для элемента управления, за которым следует событие Current для записи, в которую вы переехали, и события ENTER и GotFocus для первого элемента управления в этой записи. Чтобы выполнить макрос или процедуру событий AfterUpdate без выполнения макросов exit и LostFocus или процедур событий, сохраните запись с помощью команды Сохранить запись в меню Записи .

Макросы и процедуры событий beforeUpdate выполняются только при изменении данных в элементе управления. Это событие не возникает при изменении значения в вычисляемом элементе управления. BeforeUpdate макросы и процедуры событий для формы выполняются только при изменении данных в одном или нескольких элементах управления в записи.

Для форм можно использовать событие BeforeUpdate , чтобы отменить обновление записи перед переходом на другую запись.

Если пользователь вводит новое значение в элементе управления, параметр свойства OldValue не изменяется до тех пор, пока данные не будут сохранены (запись будет обновлена). При отмене обновления значение свойства OldValue заменяет существующее значение в элементе управления .

Событие BeforeUpdate часто используется для проверки данных, особенно при выполнении сложных проверок, таких как:

  • Использование условий для нескольких значений в форме.
  • Отображение различных сообщений об ошибках для разных введенных данных.
  • Может быть переопределен пользователем.
  • Содержат ссылки на элементы управления в других формах или пользовательские функции.

Примечание.

Для выполнения простых проверок или более сложных проверок, таких как требование значения в поле или проверка нескольких элементов управления в форме, можно использовать свойство ValidationRule для элементов управления и свойства ValidationRule и Required для полей и записей в таблицах.

Ошибка времени выполнения возникает при попытке изменить данные, содержащиеся в элементе управления, который вызвал событие BeforeUpdate в процедуре события.

Пример

В следующем примере показано, как можно использовать процедуру события BeforeUpdate для проверки того, введено ли имя продукта в базе данных. После ввода имени продукта в поле ProductName значение сравнивается с полем ProductName в таблице Products . Если в таблице Products есть соответствующее значение, отображается сообщение, информирующее пользователя о том, что продукт уже введен.

Чтобы попробовать пример, добавьте следующую процедуру события в форму с именем Products , содержащую текстовое поле с именем ProductName.

Private Sub ProductName_BeforeUpdate(Cancel As Integer) 
 If(Not IsNull(DLookup("[ProductName]", _ 
 "Products", "[ProductName] ='" _ 
 & Me!ProductName & "'"))) Then 
 MsgBox "Product has already been entered in the database." 
 Cancel = True 
 Me!ProductName.Undo 
 End If 
End Sub

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.