Почему происходит событие BeforeUpdate, когда я меняю элемент управления в VBA? - PullRequest
0 голосов
/ 19 ноября 2018

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

txtEventID = gblEventID

где txtEvent ID - это имя элемента управления, а gblEventID - переменная уровня модуля. Я не могу понять, почему это происходит. Есть идеи?

В случае, если вы хотите взглянуть на весь саб:

Private Sub Form_Current()

    If (Me.NewRecord = True) Then
        Dim lookupNum As Integer

        txtEventID = gblEventID
        lookupNum = DLookup("Max(Subplot_Num)", "tbl_Subplots", "Event_ID = " & txtEventID.Value) + 1

        If (IsNull(lookupNum)) Then
            txtSubplotNum = "1"
        Else
            txtSubplotNum = lookupNum
        End If

    End If

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

End Sub

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Насколько я могу судить, похоже, что если вы программно измените значение в элементе управления, событие Before_Update для этого элемента управления не сработает, а событие Before_Update для формы, в которой находится этот элемент управления.Документы MS неясны по этому поводу, но в моем тестировании это кажется последовательным.

0 голосов
/ 20 ноября 2018

Вы можете изменить / уменьшить этот код:

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
...