Ссылка на поле из запроса в аргументе 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

Другие вопросы по тегам