默认情况下,可以打印不包含任何记录的报表。 若要解决此问题,可以使用宏或Microsoft Visual Basic for Applications (VBA) 代码检测报表中是否缺少记录,然后取消打印操作。 本文中的步骤介绍了如何使用这两种技术。
您要做什么?
如果报表不包含任何记录,您可能想要取消打印该报表。 例如,如果您开始销售新产品,则可能有一段时间您尚未记录任何销售额。 因此,您应该考虑某些报表可能不包含任何明细记录,并且聚合函数(如 Count 函数)可能没有任何内容可计数。 若要优雅地处理这种情况,可以创建一个取消打印作业的宏。 你还可以添加几行精心放置的 VBA 代码来做同样的事情。 VBA 是 Access 使用的编程语言。
将宏或 VBA 代码添加到报表的“ 无数据” 事件过程。 每当运行没有记录的报表时,Access 都会触发“ 无数据时” 事件。 本文中描述的宏和 VBA 代码会显示相应消息,并在报表不包含任何数据时取消打印报表。 将宏或 VBA 代码添加到“ 无数据时” 事件过程时,每当打开不包含任何记录的报表时,宏或 VBA 代码就会运行。 当您单击“ 确定” 关闭任一警报消息时,该宏也会关闭空白报表。 将宏或 VBA 代码添加到报表时,尝试在报表视图或布局视图中显示空白报表时,该报表将不会打开,但可以在设计视图中打开。
使用宏取消打印
当您尝试打印空白报表时,本节介绍的宏将显示一条警告消息。 单击“ 确定” 关闭消息框时,宏会自动取消打印操作。 如果未包含警告消息,则在尝试打印报表时,似乎什么也没发生 — 这可能会使报表用户感到困惑。
创建宏
- 在导航窗格中,右键单击要更改的报表,然后单击“ 设计视图”。
- 在“设计”选项卡上的“显示/隐藏”组中,单击“属性表”。
-或者-
双击报表左上角或右上角的框,具体取决于区域和语言设置。 - 单击 “事件 ”选项卡,然后在“ 无数据时” 属性框中,单击
。
将显示“ 选择生成器” 对话框。 - 单击 “宏生成器”,然后单击“ 确定”。
宏设计器启动并显示空白宏。 - 在宏设计窗口上的宏操作下拉列表中,从列表中选择 MessageBox 。
- 在 “消息” 框中,键入警报消息的文本。
例如,可以输入以下内容: 没有要报告的记录。 - (可选)将 “蜂鸣声 ”框中的参数值从 “是 ”更改为 “否 ”,然后在 “类型 ”列表中选择要在警报消息中显示的图标类型。
- 在“ 标题 ”框中,键入警报消息的标题。
例如,可以输入 “无记录”。 - 选择 MessageBox 操作下方的宏操作下拉列表,然后选择 CancelEvent。
- 在 “设计 ”选项卡的 “关闭 ”组中,单击“ 保存”。
- 在“设计”选项卡上的“关闭”组中,单击“关闭”。 如果出现警报消息并询问您是否要保存对宏和报表属性的更改, 请单击是,关闭报表,如果出现提示,请保存更改,然后继续执行后续步骤以对其进行测试。
测试宏
- 在导航窗格中,右键单击包含宏的报表,然后单击“ 打印”。 根据你选择的选项,Access 会显示一条警告消息。
单击“ 确定” 关闭邮件时, CancelEvent 操作将停止打印操作。 由于未指定其他事件 ((例如打开报表以查看) ),因此报表将关闭。
使用 VBA 代码取消打印
此处所述的 VBA 代码的工作原理与上一节中描述的宏非常相似 — 它在打开空白报表时显示警报消息,然后在关闭警报消息时取消打印操作。
添加 VBA 代码
在导航窗格中,右键单击要更改的报表,然后单击“ 设计视图”。
注意
若要完成此过程,请使用不包含任何记录的报表。
在“设计”选项卡上的“显示/隐藏”组中,单击“属性表”。
-或者-
双击报表左上角或右上角的框,具体取决于区域和语言设置。单击 “事件 ”选项卡,然后在“ 无数据时” 属性框中,单击
。
将显示“ 选择生成器” 对话框。单击 “代码生成器”,然后单击“ 确定”。
Visual Basic 编辑器启动并显示空白事件过程。在 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完成后,单击“ 文件”,然后单击“ 保存”。
单击“ 文件”,然后单击 “关闭并返回到 Microsoft Access”。
关闭打开的报表,然后单击“ 是 ”以确认保存。
在导航窗格中,右键单击刚刚更改的报表,然后单击 “打印”。 根据你选择的选项,Access 会显示一条警告消息。
Report_NoData过程使用 MsgBox 函数显示“ 没有记录可报告 ”消息和“ 确定” 按钮。 单击“ 确定”时,过程中的“Cancel=True”行会指示 Access 取消报表。 Cancel 是一个参数,它会自动传递到事件过程,当事件过程完成时,Access 始终会对它进行检查。