Ссылка на поле из запроса в аргументе DoCmd.OpenReport Wherecondition
У меня есть командная кнопка, чтобы открыть отчет с фильтром, примененным к запросу. Это сделано для того, чтобы я мог отфильтровать отчет по значению поля в подотчете родительского отчета, иначе критерии фильтрации были бы более простыми. Я установил мой Wherecondition
следующее:
Private Sub CmdOpenReport_Click()
DoCmd.OpenReport "rptName", , , CategoryID = [Queries].[qryFltrRptByCat]!CategoryID
End Sub
Когда я нажимаю кнопку, я получаю следующее сообщение об ошибке:
Ошибка времени выполнения '2465'
Microsoft Access не может найти поле, указанное в вашем выражении.
Каков правильный синтаксис для ссылки на поле в запросе?
Запрос ищет значение в подчиненной форме и находит соответствующее CategoryID
для значения подчиненной формы. Это связано с тем, что данные в подчиненной форме имеют отношение многие к одному с CategoryID
в родительской форме.
2 ответа
Если CategoryID
в активной форме и строка, которую вы можете использовать:
Docmd.OpenReport "rptName", , , "CategoryID = '" & Me.CategoryID & "'"
Если CategoryID
в активной форме и целое / двойное число, которое вы можете использовать:
Docmd.OpenReport "rptName", , , "CategoryID = " & Me.CategoryID
Если CategoryID
находится в основной форме, но подчиненная форма активна, вы можете использовать:
Docmd.OpenReport "rptName", , , "CategoryID = " & Me.Parent.CategoryID
И вы всегда можете использовать общую ссылку:
Docmd.OpenReport "rptName", , , "CategoryID = " & Forms!YourForm!CategoryID
Вы можете посмотреть здесь для получения дополнительной информации:
Невозможно ссылаться на таблицы или запросы напрямую. Используйте DLookup(). Или обратитесь к элементу управления в форме. Необходимо объединить переменную в буквальную строку, не забывайте заключать в кавычки:
DoCmd.OpenReport "rptName", , , "CategoryID = " & Me.CategoryID