为什么在VBA中更改控件时会触发BeforeUpdate事件?

时间:2018-11-19 20:30:53

标签: database ms-access access-vba

我有一个Access表单,可以通过单击另一个表单中的按钮来打开它。我有一个Form_Current事件,该事件通过VBA更新了该表单上的多个控件。由于某种原因,这会导致Form_Current完成后触发BeforeUpdate事件,即使MS帮助文档说在VBA中更改控件不会触发此事件。我设法隔离出至少一行会触发此事件的行:

niklasraab@DESKTOP-BLJGB4D:/mnt/c/Flutter/src/hapii$ bash test.sh
1
")syntax error: invalid arithmetic operator (error token is "
1
niklasraab@DESKTOP-BLJGB4D:/mnt/c/Flutter/src/hapii$

其中txtEvent ID是控件的名称,而gblEventID是模块级变量。我不知道为什么会这样。有什么想法吗?

如果您想查看整个子目录:

txtEventID = gblEventID

2 个答案:

答案 0 :(得分:0)

您可以修改/减少该代码:

Private Sub Form_Current()

    Dim lookupNum As Integer

    If Me.NewRecord = True Then    
        lookupNum = Nz(DMax("Subplot_Num", "tbl_Subplots", "Event_ID = " & gblEventID & ""), 0) + 1
        txtSubplotNum = lookupNum
    End If

    If xboPoaching.Value = False Then 
        txtPoachingNotes.Enabled = False
    End If

End Sub

答案 1 :(得分:0)

据我所知,似乎如果您以编程方式更改控件中的值,则不会触发该控件的Before_Update事件,但是会容纳该控件的窗体的Before_Update事件。微软文档对此并不了解,但是在我的测试中似乎是一致的。