Я создал следующую функцию, чтобы решить эту проблему.
Мне нравится это решение, потому что вам не нужно иметь дело с сохраненными запросами, забивающими вашу панель навигации или длинными обходными путями.
Public Function DAOLookup(SQLstatement As String)
'once you are finished with your SQL statement, it needs to be
'formatted for VBA and it also needs to be on one line.
'example, you would set the control source of a text box to the following
'=DAOLookup("Select ls_number FROM FROM ls INNER JOIN ls_sort ON ls.ls_id = ls_sort.ls_id WHERE ls_sort.number =" & forms!frmMenu!combo_sort & ";")
'Please note, this function only work for single column single row sql statements
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset(SQLstatement)
If Not rs.BOF Then rs.MoveFirst
If rs.BOF And rs.EOF Then Exit Function
DAOLookup = rs(0)
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
End Function
Так я объяснил своему боссу. «Вы можете использовать функцию DLookUp () в качестве источника управления текстового поля. Почему бы просто не написать функцию, выполняющую запрос, и использовать функцию в качестве источника управления?
Попробуйте, это исправило мою ситуацию.