我在Access中有一个奇怪的情况。通常,Null错误的无效使用是一件非常简单的事情 - 为一个字符串变量或其他类型赋值null。但是我在一个看起来不应该发生的地方出现错误。以下是代码片段:MsAccess中的DoEvents语句中的“空使用空值”错误
bch = Form_Akces.txtMaxCisla.BackColor
If Err <> 0 Then Stop
Form_Akces.txtMaxCisla.BackColor = vbYellow
If Err <> 0 Then Stop
DoEvents
If Err <> 0 Then Stop ' This is where I get the error
With qdf_GPsp
什么是怎么发生的事情是,我得到这个错误只是有时,通常只在我第一次在一段时间运行代码。如果我关闭数据库并立即重新打开它,通常我不会得到错误。这让我疯狂了很长一段时间,所以我把所有这些“如果错误<> 0然后停止”语句,试图追踪它发生的地方。这是一个实时系统,用户知道只需重新启动应用程序,但这是一个庞大的PIA,并且引导很尴尬。
任何人都可以想到一些事情来尝试或检查?我不完全是Access中的业余爱好者,但这远远超出我曾经遇到过的任何事情。为什么DoEvents语句应该会产生这样的错误超出了我的想象,特别是因为即使在前面的语句中,我也没有做任何事情,应该会产生这样的错误,直到处理器有机会抛出错误。如果我拿出DoEvents,我只会在相同的线下得到相同的错误。 txtMaxCisla是Form_Akces表单上的一个未绑定的文本字段,包含此代码的例程将从其中调用。只有在启动时 - 一旦一切都被加载并运行,这再也不会发生。它只发生一次 - 没有模式,我已经能够检测到。
通过大量的编译,反编译,重新编译,压缩和修复循环,它已经持续了几个月,没有明显的变化,除了有时会发生在其他地方,再次没有理由我可以看到。
- 更新*
没有运气 - 它仍然崩溃,并绝对没有理由,我可以看到。下面的代码现在:
Public Sub ReloadMaxNumbers(tmc As TextBox)
Dim rst As DAO.Recordset, x$, xb$, xe$, bch&
On Error GoTo 0
If Err <> 0 Then Stop
DoEvents
If Err <> 0 Then Stop
...
代码停在第二次测试中,后的DoEvents,用同样的错误,“无效的使用Null”。我意识到这个代码是完全延迟的,但它是追溯的结果,试图找到错误的根源。没有这个,它就会在某个地方进一步崩溃,同样的错误。在这一点上,我想不出别的什么来尝试。
我有同样的问题,如果我找到解决方案,我会给你反馈。 – celerno 2013-08-10 01:38:19