Я создал следующую функцию, чтобы решить эту проблему. Мне нравится это решение, потому что вам не нужно иметь дело с сохраненными запросами, засоряющими вашу навигационную панель или длинные обходные пути.
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() в качестве источника управления текстовым полем. Почему бы просто написать функцию, которая выполняет запрос, и использовать эту функцию в качестве источника управления?» Дайте ему попробовать, он исправил мою ситуацию.
Есть ли причина, по которой данные не должны включаться в базовый источник записей формы? –