是否可以绕过BeforeUpdate事件?在我的BeforeUpdate事件中,有一些代码是在尝试保存记录时运行的,但是在相同的表单上,我有一个子表单,它要求用户在该子表单中选择一个记录。当这改变当前记录的焦点时,它会触发我的BeforeUpdate代码,而我不希望它这样做。
当用户单击表单的子表单中的记录时,是否有一种绕过表单的BeforeUpdate事件的方法?
发布于 2013-11-18 16:12:36
“当用户单击窗体子窗体中的记录时,是否有一种绕过窗体的BeforeUpdate事件的方法?”
当您将焦点切换到主窗体中未保存记录的子窗体时,Access将自动尝试保存“脏”主窗体记录。
这种行为是内置在访问中的,您无法阻止它。
我觉得你应该用另一种方法。当前(基于注释的讨论),您有一个命令按钮来保存主表单记录。但是,如果某些控件包含Null,则从窗体的BeforeUpdate事件中中止保存。
在我看来,当这些控件中的任何一个包含Null时,用户都不应该能够单击命令按钮。(为什么让他们点击一个按钮,然后告诉他们操作无效?)因此,我建议您只在所有这些控件都包含非空值时才启用命令按钮。
考虑一个名为cmdSave的命令按钮和3个文本框: txtOne、txtTwo和txtThree。创建一个过程,SetButtonAvailability,并在所有3个文本框的AfterUpdate事件中调用该过程。
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同样在表单的OnCurrent事件中,您将执行Me.cmdSave.Enabled = False,因为当前记录还没有任何要保存的更改。
https://stackoverflow.com/questions/20052091
复制相似问题