Ваша непосредственная проблема с OpenRecordset
, на самом деле не имеет ничего общего с Outlook. Итак, давайте пока проигнорируем биты Outlook и сосредоточимся на проблеме OpenRecordset
.
Ошибка возникает из-за того, что OpenRecordset
не может получить значение из поля со списком:
WHERE (((Names2.MOC)=[Forms]![Input MOC]![cboMOC#]))
Вместо этого он рассматривает [Forms]![Input MOC]![cboMOC#]
как параметр, для которого вы не указали значение. Поэтому укажите это значение перед вызовом OpenRecordset
.
Вставьте этот код в новую процедуру и запустите ее. Вы можете просмотреть вывод Debug.Print
в окне Immediate; Ctrl + g приведет вас туда.
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim strSelect As String
strSelect = "SELECT e.Email FROM Employees As e " & _
"INNER JOIN Names2 As n ON e.Employee = n.[Names Trainee] " & _
"WHERE n.MOC=[Forms]![Input MOC]![cboMOC#];"
Debug.Print "strSelect: " & strSelect
Debug.Print "combo box: " & [Forms]![Input MOC]![cboMOC#].Value
Set db = CurrentDb
Set qdf = db.CreateQueryDef(vbNullString, strSelect)
qdf.Parameters(0).Value = [Forms]![Input MOC]![cboMOC#].Value
Set rs = qdf.OpenRecordset
Do While Not rs.EOF
Debug.Print rs!Email
rs.MoveNext
Loop
Если набор записей открывается и печатает правильные данные в окне «Немедленно», исправьте исходный код, чтобы обрабатывать набор записей таким же образом. Если этот код не работает, покажите нам значения для strSelect и поле со списком, полное сообщение об ошибке и какая строка этого кода вызывает эту ошибку.