Я спрашивал об этом на 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 вылетает.
Есть ли способ заставить это работать?