ms-access - Access VBA 代码以打印每条记录的单个 PDF - 在第 10 条记

我的问题是关于我必须将 Access 报告打印成 PDF 文件的代码。我需要每个组的单独 PDF,以便我可以向每个组发送他们的销售额,并且只发送他们的销售额。该报告打印出每件售出的商品和销售的详细信息。我的代码有效,但是在第 10 个分组后它停止并给我错误代码 3048:无法打开更多数据库。我在另一个线程上读到 Access 有 2048 个引用的限制,但是我的数据集并不是那么大。我的代码如下(我已经标记了我的报告名称 REPORT 和组标识符 GROUP,我的 QUERY 从 2 个表中提取):

Private Sub Report_Click()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim MyFileName As String
    Dim mypath As String
    Dim temp As String


    mypath = "PATH\Access PDF Testing\"

    Set db = CurrentDb()

    Set rs = db.OpenRecordset("SELECT [GROUP] FROM [QUERY]", dbOpenSnapshot)

    Do While Not rs.EOF

        temp = rs("GROUP")
        MyFileName = rs("GROUP") & ".PDF"

        DoCmd.OpenReport "REPORT", acViewReport, , "[GROUP]='" & temp & "'"
        DoCmd.OutputTo acOutputReport, "", acFormatPDF, mypath & MyFileName
        DoCmd.Close acReport, "REPORT"
        DoEvents

        rs.MoveNext
    Loop


    rs.Close
    Set rs = Nothing
    Set db = Nothing

End Sub

它会工作,但在将 10 组打印成 PDF 后,它失败了。我尝试只运行名称中没有特殊字符的组,结果是强制分页符,但没有什么能超过第 10 个组记录。每个组中大约有 10-20 行。是否有人可以提供关于我可以做些什么的任何见解?

最佳答案

您说“每个组中大约有 10-20 行”。但是,您的 OpenRecordset 没有 distinct 子句,这意味着它会从 REPORT 中提取每条记录。也许您实际上打开导出每个报告 10-20 次而不是一次?

尝试:

Set rs = db.OpenRecordset("SELECT distinct [GROUP] FROM [REPORT]", dbOpenSnapshot)

(如果这按照我认为的方式工作,您将回到 2048 限制之下并且运行速度会快得多。但它仍然没有向我解释为什么这个限制甚至是一个问题,因为您正在关闭每份报告在您完成后立即提交)

关于ms-access - Access VBA 代码以打印每条记录的单个 PDF - 在第 10 条记录处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798949/

相关文章:

jsf - Primefaces 内联编辑数据表不起作用

python - 解析csv文件并使用python调用rest api

php - Chrome不会删除cookie?

ruby-on-rails - 呈现带有错误和文件输入的表单

css - :active css class not working correctly to m

session - 如何禁止 Symfony 将 _sess 文件写入我的/tmp 目录

iphone - 媒体查询不适用于 iPhone 的邮件

math - 双轮廓 - 噪声函数的法向量

gcc - 如何将源代码目录添加到 gcc 的搜索路径?

ruby-on-rails - 从复杂的 Rails 查询导出到 CSV