BeforeUpdate事件的链接子窗体控件多次触发

时间:2015-05-27 05:06:15

标签: ms-access access-vba

下午好,

我必须维护一个包含链接子表单的Access表单(使用Master和Child字段)。

基本上,在主窗体中,用户在组合框中选择一个值,子窗体会自动更新。

我的问题是我的子表单的一个字段上有一个BeforeUpdate事件,当它不符合条件时阻止更新字段(Cancel = true)。如果字段中有任何错误,警告msgbox应该出现一次,但是由于未知原因,BeforeUpdate事件总是被触发3次。

我创建了一个简单的accdb文件来重现我的问题。它位于:https://www.hightail.com/download/bXBhU2V0Q1JxRTFsQXNUQw

打开Form1,在组合框中选择一个值,然后尝试用X更新子窗体中的一个字母,你就会多次出现msgbox。

提前感谢您对此问题的帮助,因为它让我发疯。

西尔

2 个答案:

答案 0 :(得分:0)

这是因为您没有将Text0的值更改回原来的值。

试试这个

Private Sub Text0_BeforeUpdate(Cancel As Integer)
    If Me.Text0 = "X" Then
        MsgBox "Wrong value"
        Cancel = True
        Me.Text0.Undo
    End If
End Sub

答案 1 :(得分:0)

好的,终于找到了解决方案。

它与用于存储子表单使用的链接主字段的文本框有关。此控件包含我的组合框的值,以便过滤掉我的子表单。

此链接主域的控制源定义曾经是:

232792560
Finished in 0.166 seconds

通过以下方式替换定义:

=myCombobox.column(0)

我的链接子表单中的beforeUpdate事件仅触发一次,并按预期运行;

=myCombobox

我无法解释为什么它表现得那么神奇,但这就是我使它发挥作用的方式。

西尔