Office中国论坛/Access中国论坛

标题: mde与on error的困惑! [打印本页]

作者: lmj9401    时间: 2012-7-13 10:13
标题: mde与on error的困惑!
本帖最后由 lmj9401 于 2012-7-13 11:31 编辑

在access数据库中新建窗体(或报表),然后在“打开”事件中添加以下代码:
  1.     On Error Resume Next
  2.     Dim str As String
  3.     str = Parent.Name
  4.     MsgBox str
复制代码
当直接运行该窗体(或报表)时,由于Parent.Name是一个显然的错误引用,触发error。但是on error在mdb和mde中的表现却大相径庭。

在mdb文件中On Error Resume Next可以发挥作用,代码正常运行。
在mde文件中On Error Resume Next引发程序崩溃,如图所示。
[attach]49663[/attach]

请问,应该如何解决on error在mde中引发程序崩溃的问题?
作者: layaman_999    时间: 2012-7-13 10:30
Parent.Name
在子窗体中不能用于打开或者加载等事件,应该写成过程由主窗体调用,因为子窗体先加载,执行OPEN事件时候,还读取不到主窗体的属性

作者: lmj9401    时间: 2012-7-13 11:09
上述数据库中只有一个窗体(或报表),Parent.Name是一个显而易见的错误,这个错误是故意设置的,这里要考察的是On Error Resume Next的执行效果。
在mdb文件中On Error Resume Next能够有效的捕获异常(错误)并忽略该异常继续执行后面的代码。但是在mde文件中却引发程序崩溃,On Error Resume Next机制失效!
作者: t小宝    时间: 2012-7-13 13:37
测试了一下,确实如楼主所说,On Error Resume Next 在 mde 中失效,
不过改用 On Error GoTo line 还是可以的。

这是一个很宝贵的经验,谢谢分享!


作者: lmj9401    时间: 2012-7-13 20:15
我猜测,这可能是mde优化代码造成的。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3