У меня есть форма в MS Access, где при нажатии кнопки выполняется следующий код. Моя цель - заставить пользователя ввести значение при нажатии кнопки в форме и отправить это значение в отчет с использованием openargs. Я хотел добавить в этот запрос параметр openargs, но когда я ввожу значение в поле ввода и нажимаю «Enter», я получаю подсказку с названием «Введите параметр», в которой меня просят ввести значение для всех полей в отчете. Я новичок в VBA и не знаю, что делаю не так
Форма
strInput = InputBox("Which value did you want to print?")
DoCmd.OpenReport "01-REPORT", acPreview, , , , OpenArgs = strInput
Отчет
В моем отчете о событии открытого отчета у меня есть
Private Sub Report_Open(Cancel As Integer)
If Me.OpenArgs > 0 Then
Me.RecordSource = "PRINT FINAL DATA WHERE " & "InvNum = '" & Me.OpenArgs & "'"
End If
End Sub
* ПЕЧАТЬ КОНЕЧНЫХ ДАННЫХ * - это имя запроса, являющегося источником записей отчета.





Чтобы открыть отчет с отфильтрованными данными, вы можете сделать это:
RecordSource задайте запрос со всеми данными
(ваш *PRINT FINAL DATA *). И сохраните это.Для формы в обработчике кликов напишите это (я опускаю все проверки ошибок и т. д.)
strInput = InputBox("Which value did you want to print?")
DoCmd.OpenReport "01-REPORT", acPreview, , "InvNum = '" & strInput & "'"
Четвертый параметр OpenReport - это WhereCondition, который фильтрует данные перед составлением отчета.
P.S. И отчет запрашивает значение каждого поля, потому что ваш отчет не имеет сохраненного значения в RecordSource, когда вы его открываете. Или в запросе таких полей нет.
"это выражение набрано неправильно или слишком сложно для оценки"
1. проверьте, работает ли отчет при открытии вручную 2. проверьте, является ли InvNum текстовым типом в запросе / таблице 3. проверьте, что WhereCondition не является неправильным.
Спасибо! Я не знал, что в DoCmd.OpenReport есть возможность добавить условие where. Но следующий ваш код дает мне эту ошибку в строке openreport с where condidiotn