MS Access VBA:打开报表时,报表所依赖的查询完成后会触发啥事件?

Posted

技术标签:

【中文标题】MS Access VBA:打开报表时,报表所依赖的查询完成后会触发啥事件?【英文标题】:MS Access VBA: When opening a report, what event is triggered once the query that the report depends on has been completed?MS Access VBA:打开报表时,报表所依赖的查询完成后会触发什么事件? 【发布时间】:2018-05-01 04:09:38 【问题描述】:

我有一个依赖于查询的报告。报告正确显示,但我试图让标签的可见性取决于查询中的是/否字段。

以下会产生 错误 2424,即未找到该字段

Private Sub Report_Open(Cancel As Integer)
lblUppersIncluded.Visible = ysnUppersIncluded
End Sub 

或者:

Private Sub Report_Activate()
lblUppersIncluded.Visible = ysnUppersIncluded
End Sub

给出错误 2427 表达式没有值。 Report_Load 也是如此。

但是,在执行同一行代码的报表上创建的命令框可以正确执行。

我怀疑在运行查询之前触发了所有报告事件,因此尚未填充这些字段。查询完成后是否有可以使用的事件?

【问题讨论】:

【参考方案1】:

有时解决此类问题的最佳方法是将标签转换为文本框并使用条件格式。如果条件格式无法满足您的格式需求,那么您可以查看代码。

特别是要使标签可见或不可见,您甚至不需要条件格式。转换为文本框并使用:

=IIF([My condition for visible label],"My Label text:","")

作为它的控制源。

【讨论】:

感谢@SunKnight0 的提示,您的方法更可靠。【参考方案2】:

我发现如果使用 Detail_Format 事件,依赖于查询字段的代码将起作用。此事件在打印预览视图中触发,而不是在报表视图中触发。

【讨论】:

以上是关于MS Access VBA:打开报表时,报表所依赖的查询完成后会触发啥事件?的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 2016:设置报表的 RecordSource 以从子窗体中获取数据

MS.Access - 在 DoCmd.OpenReport [where 条件] 中使用 2 个过滤条件从表单打印报表

MS Access:将参数传递给不带 SQL 的子报表

打开特定报表而不是表的 Access 数据库?

MS Access 如何将焦点集中在特定的多个报表实例上

在Access 2007 VBA中,未保存的表单和报表是否可以键入为“AccessObject”..?