下午好,
我必须维护一个包含链接子表单的Access表单(使用Master和Child字段)。
基本上,在主窗体中,用户在组合框中选择一个值,子窗体会自动更新。
我的问题是我的子表单的一个字段上有一个BeforeUpdate事件,当它不符合条件时阻止更新字段(Cancel = true)。如果字段中有任何错误,警告msgbox应该出现一次,但是由于未知原因,BeforeUpdate事件总是被触发3次。
我创建了一个简单的accdb文件来重现我的问题。它位于:https://www.hightail.com/download/bXBhU2V0Q1JxRTFsQXNUQw。
打开Form1,在组合框中选择一个值,然后尝试用X更新子窗体中的一个字母,你就会多次出现msgbox。
提前感谢您对此问题的帮助,因为它让我发疯。
西尔
答案 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
我无法解释为什么它表现得那么神奇,但这就是我使它发挥作用的方式。
西尔