Вопрос

Можно ли обойти событие BeforeUpdate?У меня есть некоторый код в моем событии BeforeUpdate, которое запускается при попытке сохранить запись, однако в той же форме у меня есть подчиненная форма, которая требует, чтобы пользователь выбрал запись в этой подчиненной форме.Поскольку это изменяет фокус текущей записи, это запускает мой код BeforeUpdate, чего я не хочу, чтобы он делал.

Есть ли способ обойти событие BeforeUpdate формы, когда пользователь нажимает на запись во вложенной форме?

Это было полезно?

Решение

"Есть ли способ обойти событие BeforeUpdate формы, когда пользователь нажимает на запись во вложенной форме?"

Когда вы переключаете фокус на подчиненную форму с несохраненной записью в основной форме, Access автоматически попытается сохранить "грязную" запись основной формы.

Такое поведение встроено в Access, и вы не можете его предотвратить.

Я думаю, вам следует использовать другой подход.В настоящее время (основываясь на обсуждении комментариев) у вас есть командная кнопка для сохранения основной записи формы.Однако, если некоторые элементы управления содержат значение Null, вы прерываете сохранение из формы Перед обновлением событие.

С моей точки зрения, пользователь даже не должен иметь возможности нажать кнопку command, если какой-либо из этих элементов управления содержит Null.(Зачем позволять им нажимать кнопку, а затем сообщать им, что действие недействительно?) Поэтому я предлагаю вам включать командную кнопку только тогда, когда все эти элементы управления содержат ненулевые значения.

Рассмотрим командную кнопку с именем cmdSave Сохранить и 3 текстовых поля: Текстовый тон, txtTwo, и TXT - три.Создайте процедуру, Доступность SetButtonAvailability, и вызовите эту процедуру в Последующее обновление события всех 3 текстовых полей.

Private Sub SetButtonAvailability
    If IsNull(Me.txtOne) Or IsNull(Me.txtTwo) Or IsNull(Me.txtThree) Then
        Me.cmdSave.Enabled = False
    Else
        Me.cmdSave.Enabled = True
    End If
End Sub

Также в форме Текущий событие, которое вы бы сделали Me.cmdSave.Enabled = False потому что пока нет никаких изменений для сохранения текущей записи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top