У вас есть форма, в которой пользователь выбирает критерии, используемые для построения WhereCondition , которое используется для фильтрации отчета. Не просите отчет пересмотреть критерии формы, чтобы создать соответствующий заголовок для себя. Создайте строку заголовка в той же процедуре, которая создает WhereCondition . Затем передайте эту строку как OpenArgs при вызове OpenReport
.
Например, если нет ограничений на виды:
strHeader = "Species: All"
Или для выбранного вида:
strHeader = "Species: Blue-tailed damselfly"
Затем передайте strHeader
при открытии отчета:
DoCmd.OpenReport ReportName:="YourReport", _
View:=acViewReport, _
WhereCondition:=strWhere, _
OpenArgs:=strHeader
А в событии загрузки отчета вы можете проверить, есть ли у вас что-то в OpenArgs и использовать его:
If Len(Me.OpenArgs) > 0 Then
' do what you want with it '
End If
Такой подход делает отчет независимым от какой-либо конкретной формы. Стратегия не нарушается, если вы переименуете текущую форму или создадите другую форму для критериев выбора отчета.
Вы можете даже назначить соответствующий заголовок, когда критерии отчета заранее стандартизированы. Например, командная кнопка с заголовком «Просмотр вчерашних дополнений»:
strWhere = "[Date_Added] >= (Date() - 1) AND [Date_Added] < Date()"
strHeader = "Species Added Yesterday"
DoCmd.OpenReport ReportName:="YourReport", _
View:=acViewReport, _
WhereCondition:=strWhere, _
OpenArgs:=strHeader