是否有办法根据报告中的特定条件/字段将MS Access中的报告导出为PDF?
我在MS Access中创建了一份生产力报告。而不是将50个页面导出为1个PDF,有没有办法根据经理的名字导出?经理姓名的字段包含在实际报告中。
答案 0 :(得分:1)
你可以接受这个想法并玩它。将其插入模块
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参数。所以我们通过设置两个全局变量(我知道......)来解决这个问题,它让我们知道是否应该使用Manager过滤器和过滤器是什么。当我们运行ExportFilteredManagerReportToPDF并传递名称时,sub会将报告输出为PDF。由于报告附带了代码,因此当OutputTo运行时,报告将检测是否启用了过滤器,如果是,则应用它。然后OutputTo完成其工作并输出PDF。
要为经理John Smith运行此操作,您可以从调试窗口运行它:
ExportFilteredManagerReportToPDF "John Smith"