根据条件将MS Access报告导出为PDF

时间:2014-06-27 13:36:46

标签: ms-access pdf export report criteria

是否有办法根据报告中的特定条件/字段将MS Access中的报告导出为PDF?

我在MS Access中创建了一份生产力报告。而不是将50个页面导出为1个PDF,有没有办法根据经理的名字导出?经理姓名的字段包含在实际报告中。

1 个答案:

答案 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"