取消On No Data并从On Close调用函数时Access 2007崩溃

时间:2014-06-27 21:16:44

标签: ms-access ms-access-2007

MS Access 2007(可能是更高版本)似乎有一个错误,当在On No Data事件中取消报表打开并且On Close事件包含对公共函数的调用时,该错误会导致硬崩溃。这似乎不是MS Access 2003或更早版本的问题。

重现的步骤:

  • 在MS Access 2007中创建新报告(这不是MS Access 2003及之前的问题)
  • 设置记录源(可以是任何内容,但必须是绑定报告)
  • 将无数据上的事件设置为[Event Procedure]
  • 在报告的代码模块中,输入:

Private Sub Report_NoData(Cancel As Integer)`  
    Cancel = True
End Sub
  • 将事件设置为关闭至=Foo()
  • 在标准代码模块中,添加以下代码:

Public Function Foo()
End Function
  • 使用排除所有数据的过滤器打开报告(为了引发无数据事件)

结果:

  • 使用“访问已停止工作...”错误消息
  • 立即遭受访问

两个问题:

  1. 有解决方法吗?
  2. 这是一个已知问题吗? (Microsoft或更高级MS Access社区已知)

1 个答案:

答案 0 :(得分:0)

解决方法

有几种解决方法:

  • 使用“[Event Procedure]”替换报告的On Close属性中的函数调用,然后在VBA中报告的Private Sub Report_Close()内调用该函数。

    - 或 -

  • 将函数调用从报表的On Close属性移动到On Onload属性。 (注意:On Unload report property是随MS Access 2007引入的