Вам не нужен DLookup. Вы можете сделать одну из двух вещей:
1) Используйте ListBox и установите RecordSource равную ваш запрос (при условии, Q: предприятия были надлежащим образом определены, чтобы дать предприятия в результате)
2) Тем не менее, нужно ваш запрос будет необходимо, но вы можете создать строку со всеми предприятиями в нем:
Public Sub OpenRecordset()
Dim db As Database
Dim rs As Recordset
Dim StrBusinesses As String
Set db = CurrentDb
Set rs = db.OpenRecordset("qryBusinesses")
If rs.EOF and rs.BOF Then
MsgBox("No businesses exist for this Customer")
Exit Sub 'Or do whatever else you want if there are no matches
Else
rs.MoveFirst
End If
StrBusinesses = ""
Do While Not rs.EOF
StrBusinesses = StrBusinesses & rs!Business & ", "
rs.movenext
Loop
rs.Close
StrBusinesses = Left(StrBusinesses, Len(StrBusinesses) - 2)
Forms!MyForm.MyField = StrBusinesses 'Set the field equal to the string here
Set rs = Nothing
db.Close
End Sub
конечно, это предполагает, что запрос «Q: Бизнес» определяется, чтобы получить нужную информацию, такие как:
SELECT custID, business FROM tblBusinesses WHERE custID = X
где «X» - это custID, который вы ищете.
Если вам нужно задать запрос динамически, вам нужно будет установить querydef.
EDIT, чтобы включить код запроса. *********************** Также изменил имя запроса на «qryBusinesses» в коде выше и ниже поскольку я не уверен, что вы можете сделать запрос с двоеточием в нем.
Чтобы установить QueryDef, поставить это в начале кода:
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("qryBusinesses")
qdf.SQL = "SELECT custID, business FROM tblBusinesses" _
& " WHERE custID = " & Forms!MyForm.CustID 'replace with actual form and field
Это предполагает, что I) qryBusinesses уже существует, II) CustID является поле номера
EDIT *** *********** Если вы определяете запрос для просмотра самой формы, вам не нужно будет устанавливать sql, поэтому, если запрос был определен (либо в VBA, либо через мастер запросов), как : qdf.sql = "SELECT custID, business FROM tblBusinesses" _ & «WHERE custID = Forms! MyForm.CustID»
тогда вам не нужно было переопределять sql. Тем не менее, немного более динамично поставить custID в qdf, так как легче отлаживать любые проблемы, так как вы можете увидеть точный sql, который выполняется в исходном методе.
Благодарим вас, если вы поместите эти поля в форму, можете ли вы втянуть их в отчет? Кроме того, можем ли мы добавить в запрос, что Where CustID = [«Имя формы»]? – epv
Вы можете поместить это в запрос до тех пор, пока выполняете запрос динамически. Я добавлю изменение, чтобы показать, как это сделать. – OpiesDad
Спасибо, OpiesDad, после того, как я положил это в модуль, как мне получить это, чтобы показать в форме? Я просто создаю текстовое поле и привязываю его к событию с помощью Click? – epv