Вы можете взять эту идею и поиграть с ней. Вставьте это в модуль
Option Explicit
Dim g_ManagerReportFilterEnabled As Boolean
Dim g_ManagerReportFilter As String
Public Function IsManagerReportFilterEnabled() As Boolean
IsManagerReportFilterEnabled = g_ManagerReportFilterEnabled
End Function
Public Function GetManagerReportFilter() As String
GetManagerReportFilter = g_ManagerReportFilter
End Function
Public Sub ExportFilteredManagerReportToPDF(strManagerName As String)
On Error GoTo ExportFilteredManagerReportToPDF_ErrorHandler
g_ManagerReportFilterEnabled = True
g_ManagerReportFilter = "[MyManagerNameField] = " & Chr(34) & strManagerName & Chr(34)
DoCmd.OutputTo acOutputReport, "MyReportName", acFormatPDF, "MyPath:\MyFileName.PDF", False
GoTo ExitMe
ExportFilteredManagerReportToPDF_ErrorHandler:
Debug.Print err.Number & ": " & err.Description
ExitMe:
g_ManagerReportFilterEnabled = False
Exit Sub
End Sub
и просмотрите переменные, которые необходимо заменить. И это в Report_Open вашего отчета:
Private Sub Report_Open(Cancel As Integer)
If IsManagerReportFilterEnabled = True Then
Me.Filter = GetManagerReportFilter
Me.FilterOn = True
End If
End Sub
Таким образом, проблема, которую пытается решить этот код, заключается в том, что мы хотим использовать DoCmd.OutputTo для вывода нашего PDF-файла, но он не принимает параметр Filter. Поэтому мы обходим это, устанавливая две глобальные переменные (я знаю...), которые сообщают нам, следует ли нам использовать фильтр менеджера и что это за фильтр. Когда мы запускаем ExportFilteredManagerReportToPDF и передаем имя, подпрограмма выводит отчет в PDF. Из-за кода, прикрепленного к отчету, при запуске OutputTo отчет определяет, включен ли фильтр, и, если да, применяет его. Затем OutputTo завершает свою работу, и PDF-файл выводится.
Чтобы запустить это для менеджера Джона Смита, скажем, вы можете запустить это из окна отладки:
ExportFilteredManagerReportToPDF "John Smith"
person
VBlades
schedule
28.06.2014