доступ 2003 на Windows 10 - RaiseEvent, кажется, не работает - PullRequest
0 голосов
/ 01 июня 2019

Очень простой mdb: form1 имеет только кнопку Command0, а form2 - просто кнопку Command0.

  • Кнопка на форме1 загружает форму2.
  • Кнопка в form2 вызывает событие "doit".
  • Это событие никогда не срабатывает.

Почему? Это весь код в форме:

form1

Option Compare Database
Private WithEvents msg As Form
Private Sub Command0_Click()
    DoCmd.OpenForm "form2"
    Set msg = Forms("form2")
End Sub
Sub msg_doit()
    Stop
End Sub

Form2

Option Compare Database
Public Event doit()

Private Sub Command0_Click()
    RaiseEvent doit
End Sub

1 Ответ

1 голос
/ 02 июня 2019

Вам необходимо использовать соответствующий (определенный) интерфейс, содержащий ваше событие.

Для форм интерфейс Access.Form является общим (для всех форм) и содержит только встроенные методы иevents, Access.Form_MyFormName - это особый интерфейс, который также содержит все открытые методы и события, которые вы объявили.

Единственное, что вам нужно изменить:

Private WithEvents msg As Form_form2

Тогда он должен просторабота.

...