取消打印不包含任何记录的报表

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

默认情况下,可以打印不包含任何记录的报表。 若要解决此问题,可以使用宏或Microsoft Visual Basic for Applications (VBA) 代码检测报表中是否缺少记录,然后取消打印操作。 本文中的步骤介绍了如何使用这两种技术。

您要做什么?

如果报表不包含任何记录,您可能想要取消打印该报表。 例如,如果您开始销售新产品,则可能有一段时间您尚未记录任何销售额。 因此,您应该考虑某些报表可能不包含任何明细记录,并且聚合函数(如 Count 函数)可能没有任何内容可计数。 若要优雅地处理这种情况,可以创建一个取消打印作业的宏。 你还可以添加几行精心放置的 VBA 代码来做同样的事情。 VBA 是 Access 使用的编程语言。

将宏或 VBA 代码添加到报表的“ 无数据” 事件过程。 每当运行没有记录的报表时,Access 都会触发“ 无数据时” 事件。 本文中描述的宏和 VBA 代码会显示相应消息,并在报表不包含任何数据时取消打印报表。 将宏或 VBA 代码添加到“ 无数据时” 事件过程时,每当打开不包含任何记录的报表时,宏或 VBA 代码就会运行。 当您单击“ 确定” 关闭任一警报消息时,该宏也会关闭空白报表。 将宏或 VBA 代码添加到报表时,尝试在报表视图或布局视图中显示空白报表时,该报表将不会打开,但可以在设计视图中打开。

使用宏取消打印

当您尝试打印空白报表时,本节介绍的宏将显示一条警告消息。 单击“ 确定” 关闭消息框时,宏会自动取消打印操作。 如果未包含警告消息,则在尝试打印报表时,似乎什么也没发生 — 这可能会使报表用户感到困惑。

创建宏

  1. 在导航窗格中,右键单击要更改的报表,然后单击“ 设计视图”。
  2. 在“设计”选项卡上的“显示/隐藏”组中,单击“属性表”。
    -或者-
    双击报表左上角或右上角的框,具体取决于区域和语言设置。
  3. 单击 “事件 ”选项卡,然后在“ 无数据时” 属性框中,单击 “生成器”按钮 。
    将显示“ 选择生成器” 对话框。
  4. 单击 “宏生成器”,然后单击“ 确定”。
    宏设计器启动并显示空白宏。
  5. 在宏设计窗口上的宏操作下拉列表中,从列表中选择 MessageBox 。
  6. 在 “消息” 框中,键入警报消息的文本。
    例如,可以输入以下内容: 没有要报告的记录。
  7. (可选)将 “蜂鸣声 ”框中的参数值从 “是 ”更改为 “否 ”,然后在 “类型 ”列表中选择要在警报消息中显示的图标类型。
  8. 在“ 标题 ”框中,键入警报消息的标题。
    例如,可以输入 “无记录”。
  9. 选择 MessageBox 操作下方的宏操作下拉列表,然后选择 CancelEvent。
  10. 在 “设计 ”选项卡的 “关闭 ”组中,单击“ 保存”。
  11. 在“设计”选项卡上的“关闭”组中,单击“关闭”。 如果出现警报消息并询问您是否要保存对宏和报表属性的更改, 请单击是,关闭报表,如果出现提示,请保存更改,然后继续执行后续步骤以对其进行测试。

测试宏

  • 在导航窗格中,右键单击包含宏的报表,然后单击“ 打印”。 根据你选择的选项,Access 会显示一条警告消息。
    单击“ 确定” 关闭邮件时, CancelEvent 操作将停止打印操作。 由于未指定其他事件 ((例如打开报表以查看) ),因此报表将关闭。

返回页首

使用 VBA 代码取消打印

此处所述的 VBA 代码的工作原理与上一节中描述的宏非常相似 — 它在打开空白报表时显示警报消息,然后在关闭警报消息时取消打印操作。

添加 VBA 代码

  1. 在导航窗格中,右键单击要更改的报表,然后单击“ 设计视图”。

    注意

    若要完成此过程,请使用不包含任何记录的报表。

  2. 在“设计”选项卡上的“显示/隐藏”组中,单击“属性表”。
    -或者-
    双击报表左上角或右上角的框,具体取决于区域和语言设置。

  3. 单击 “事件 ”选项卡,然后在“ 无数据时” 属性框中,单击 “生成器”按钮 。
    将显示“ 选择生成器” 对话框。

  4. 单击 “代码生成器”,然后单击“ 确定”。
    Visual Basic 编辑器启动并显示空白事件过程。

  5. 在 Visual Basic 编辑器中键入以下代码,以便在完成后Report_NoData过程如下所示:

    Private Sub Report_NoData (Cancel As Integer)
      MsgBox "There are no records to report", vbExclamation, "No Records"
      Cancel = True
    End Sub
    
    
  6. 完成后,单击“ 文件”,然后单击“ 保存”。

  7. 单击“ 文件”,然后单击 “关闭并返回到 Microsoft Access”。

  8. 关闭打开的报表,然后单击“ 是 ”以确认保存。

  9. 在导航窗格中,右键单击刚刚更改的报表,然后单击 “打印”。 根据你选择的选项,Access 会显示一条警告消息。

Report_NoData过程使用 MsgBox 函数显示“ 没有记录可报告 ”消息和“ 确定” 按钮。 单击“ 确定”时,过程中的“Cancel=True”行会指示 Access 取消报表。 Cancel 是一个参数,它会自动传递到事件过程,当事件过程完成时,Access 始终会对它进行检查。

返回页首