【问题标题】:How to output multiple PDF files based on record in MS Access?如何根据 MS Access 中的记录输出多个 PDF 文件?
【发布时间】:2018-07-13 21:57:28
【问题描述】:

我是 MS Access 的新手,现在我有一个基于包含 100 条记录的表的报告。我想根据每条记录输出 pdf 文件。这意味着每条记录都有自己的单个 pdf 文件,文件名将基于记录的列名。

我在网上搜索了一下,发现这个vba代码是可以的。

Option Compare Database
Option Explicit

Private Sub Command4_Click()
  Dim rsGroup As DAO.Recordset
  Dim ColumnName As String, myPath As String

  myPath = "C:\test\"

  Set rsGroup = CurrentDb.OpenRecordset("SELECT DISTINCT columnName FROM Table_Name", _
                                    dbOpenDynaset)
  Do While Not rsGroup.EOF
  ColumnName = rsGroup!columnName 

  ' OPEN REPORT, FILTERING RECORDSOURCE BY COLUMN VALUE
  DoCmd.OpenReport "Table_Name_Report", acViewPreview, , "Column='" & ColumnName & "'"
  ' OUTPUT REPORT TO FILE
  DoCmd.OutputTo acOutputReport, "Table_Name_Report", acFormatPDF, _
                                myPath & ColumnName & ".pdf", False
  ' CLOSE PREVIEW
  DoCmd.Close acReport, "Table_Name_Report"

 rsGroup.MoveNext
 Loop

 rsGroup.Close

我从没用过VBA,每次运行这段代码都会返回一个窗口让我输入列记录值​​。那不是自动的,如何更改代码让它自动读取记录值并填充pdf?

【问题讨论】:

    标签: ms-access pdf vba


    【解决方案1】:

    我这样做的方法是动态设置报告所基于的查询(即记录源),并带有“columnName”。比如:

    (代码未运行)

    Public Sub cmdOpenMyReport_Click()
    
        Dim strSQL As String
      Dim rsGroup As DAO.Recordset
      Dim ColumnName As String, myPath As String
    
      myPath = "C:\test\"
    
      Set rsGroup = CurrentDb.OpenRecordset("SELECT DISTINCT pharmacyName FROM Sfwy_Patients_New", dbOpenDynaset)
    
      Do Until rsGroup.EOF
        ColumnName = rsGroup!pharmacyName
        strSQL = "SELECT ... WHERE Column = " & COLUMName & ";"  'copy sql from the report record source and put in the column name as a variable
        CurrentDb.QueryDefs("myReportRecordSource").SQL = strSQL 
    
      ' OUTPUT REPORT TO FILE
      DoCmd.OutputTo acOutputReport, "Sfwy_Patients_New_Report", acFormatPDF, _
                                    myPath & ColumnName & ".pdf", False
        rsGroup.movenext
      Loop
    
    end sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多