【问题标题】:DoCmd.OutputTo only works on breakDoCmd.OutputTo 仅适用于中断
【发布时间】:2014-10-03 21:06:35
【问题描述】:

我在 VBA Access 2013 中的 DoCmd.OutputTo 命令遇到了一个具有挑战性的问题。

我有下面的代码,它基本上是从本质上是报销记录的集合中打印一个特定的报告。这个想法是,可以将活动记录(从活动表单)[导出]到 PDF 文件,然后将扫描的发票添加到 PDF。

为此,我需要构建基本文件(即添加发票的 PDF),然后运行添加单个文件的例程。

以下代码应创建初始 PDF 文件:

    Dim rpt as Report

    filePath = "<some filepath>"
    fName = Me!idDecl & " - (script).pdf"
    filePath = filePath & fName

    Set rpt = Report_qryDeclInvoice
    With rpt
        .Filter = "[fltID]= " & Me!id
        .FilterOn = True
    End With

    DoCmd.OpenReport rpt.Name, acViewPreview, , "[fltID]= " & Me!id
    DoCmd.OutputTo acOutputReport, rpt.Name, acFormatPDF, filePath, False
    DoCmd.Close acReport, "qryDeclInvoice"

如果我运行代码 - 没有中断 - 报告会根据过滤后的参数打开,但是,将记录输出到 PDF 的后续命令不会? 也就是说,出现一个非常短暂的对话框(看不懂它说什么)然后执行就停止了,没有错误,没有错误代码,只是一个干净的休息?

现在是有趣的一点.. 如果我在 DoCmd.OutputTo 行上设置断点,并使用 F8 执行该行,则代码或多或少完美无缺(见下文)?似乎中断允许预览例程首先完成,然后运行 ​​OutputTo 例程。

除了上述挑战之外,在某些报告(即某些报销)上,它运行良好并且文件已创建,但在其他报告中,它根本不创建初始 PDF,并且代码在没有错误代码或故障报告的情况下中断.报告之间没有明显区别?

我尝试通过将 OpenReport 函数的 OutputTo 休眠 1000 毫秒来延迟它,但这不起作用(即使长达 5000 毫秒也不会产生结果)

此外,如果我删除打开的预览行并只执行 OutputTo 行,而不先打开预览,它仅在使用 F8 中断和执行时才有效,并且仅适用于某些报告而不是全部?

OutputTo 命令似乎 - 至少在我的情况下 - 有点不可靠:-)

有什么建议吗??

【问题讨论】:

  • GD 所有人,好的,知道发生了什么;错误报告基于分组创建了多个页面。报表中/上的 VBA 代码,基于分组重新创建页码(即为每个组的开始重新开始页码。)报表中的 VBA 执行(即在打开或页面上)会干扰 OutputTo 的执行例程以上都干扰了 OutputTo 例程,但不确定为什么 - 仍然 - 删除报告中的所有 VBA 代码解决了这个问题!
  • 优秀 - 为什么不将其添加为答案,问答风格?

标签: ms-access pdf vba


【解决方案1】:

好的,查明是怎么回事;

我提到的错误报告基于分组创建了多个页面。

报表中/报表上的 VBA 代码部分,根据分组重新创建页码(即为每个组的开始重新开始页码。)此 VBA 在报表中的执行(即在打开时或在页面上) 干扰“OutputTo”例程的执行。以上干扰了 OutputTo 例程,导致它中断,但不知道为什么-yet-

删除报告中的所有 VBA 代码解决了问题!!

一些添加的细节:

  • 不再需要预览
  • 从VBA设置报表的过滤器,通过报表对象名打开报表

在下面找到工作代码:

Dim rpt as Report

filePath = "<somepath>"
fName = Me!idDecl & "-(script).pdf"
filePath = filePath & fName
'Debug.Print filePath

Set rpt = Report_qryInvoice
With rpt
    .Filter = "[fltID]= " & Me!id
    .FilterOn = True
End With

'Sleep (5000)
DoCmd.OutputTo acOutputReport, rpt.Name, acFormatPDF, filePath, False, , , acExportQualityScreen

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 2017-07-17
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 2018-03-01
    • 2016-03-19
    相关资源
    最近更新 更多