【问题标题】:Trigger an event in Microsoft Access when a report is printed from DoCmd OpenReport从 DoCmd OpenReport 打印报表时触发 Microsoft Access 中的事件
【发布时间】:2011-10-20 16:25:39
【问题描述】:

我正在尝试在使用 DoCmd OpenReport 运行的报告上运行脚本。我不是在预览报告,而是直接将其发送到打印机。似乎当您这样做时,报告的任何事件都不会被触发。无论如何在报告打印时触发类似 OnLoad 的东西?

【问题讨论】:

    标签: events ms-access report


    【解决方案1】:

    【讨论】:

    • 这当然适用于表单,但是当我从 VBA 脚本打印报表时,我需要知道如何在报表上触发事件。如果报表以预览模式打开,则会触发 onLoad 等事件,但如果在不查看报表表单的情况下打印报表,则不会触发。
    • @mackeyka 打开事件适用于报告和表单。这在链接的“适用于”中进行了说明。
    • 这是真的,但我的问题是,当使用以下命令从 VBA 脚本打印报告时: DoCmd.OpenReport stDocName, acNormal, , stLinkCriteria 报告实际上并没有在屏幕上打开(例如在打印预览中)首先不会触发任何通常会发生的事件。
    • 试试看。将MsgBox "Hello"放入open事件中,运行VBA打开,会弹出消息框。另外,当您从 VBA 运行时,我绝不清楚为什么要在报告中添加代码。您可以在打印行之后分支到您想要的任何代码。
    • 试过了。 OnOpen 适用于从 VBA 进行打印预览,但如果报告直接发送到打印机则不会触发。报表很复杂,子表单很多。根据报告是针对 A 组还是 B 组,一个部分会有所不同。我要运行的代码将根据报告针对的组选择要在该位置打印的子表单。报告上有一个字段,用于标识报告用于哪个组,并且报告上的代码使用该字段来确定要打印的子表单。整个数据库很大,我不想在该做的时候再放一份报告。
    【解决方案2】:

    我也遇到过类似的问题,先打开隐藏的报告解决了:

    DoCmd.OpenReport "ReportName", acViewReport, , strCriteria, acHidden
    

    然后将其发送到打印机并关闭报告。

    【讨论】:

    • 这个版本对我有用。将 DoCmd.OpenReport stDocName, acNormal, , stLinkCriteria 更改为 DoCmd.OpenReport stDocName, acViewReport, , stLinkCriteria。但无法使用 acHidden,因为它打印了一个不同的打开表单,而不是刚刚打开的报告。所以报告会在屏幕上闪烁,但用户只能忍受一段时间,直到我弄清楚为什么它会打印出错误的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多