Доступ к сбоям при использовании VBA для установки связанного Combobox RowSource - PullRequest
0 голосов
/ 30 апреля 2020

Я спрашивал об этом на UA, но хотел опубликовать здесь также в надежде, что кто-нибудь может помочь мне разобраться в этом. Кроме того, я знаю о пороках использования MVF; это просто то, что я хочу выяснить.

У меня есть форма с полем со списком, который связан с многозначным полем. Я хочу использовать VBA для установки RowSource в выпадающем списке. (В частности, я хочу использовать значение другого комбинированного списка в форме, чтобы отфильтровать доступные варианты во втором комбинированном окне, но сейчас я просто пытаюсь заставить обновление RowSource работать со статическим статусом c SQL .)

Если я установлю RowSource в режиме конструктора формы, он будет работать как положено. Но как только я пытаюсь использовать точно такое же значение для установки RowSource в VBA, Access вылетает. Вот код события после обновления «родительского» выпадающего списка:

Private Sub cboSelRegSet_AfterUpdate()
  Dim strSQL As String
  On Error GoTo Query_Error

  strSQL = "SELECT tblRegulation.ID, tblRegulation.RegulationCode " _
         & "FROM tblRegulation " _
         & "ORDER BY tblRegulation.RegulationCode;"

  MsgBox "Before Filter", vbOKOnly
  Me.cboSelReg.RowSource = strSQL
  MsgBox "After Filter", vbOKOnly
  Me.cboSelReg.Requery
  MsgBox "After Requery", vbOKOnly

ExitNow:
  Exit Sub

Query_Error:
  MsgBox Err.Description
  Resume ExitNow

End Sub

Если я сделаю «cboSelReg» несвязанным, то обновление будет работать, но, поскольку оно больше не связано с MVF, Пользователь может выбрать только одно значение, которое не соответствует этой цели.

Я также добавил msgbox-подсказки для пошагового выполнения кода, и, похоже, он проходит через всю подпрограмму, так как я получаю подсказку после запроса. Но как только я нажимаю ОК, Access вылетает.

Есть ли способ заставить это работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...