gpt4 book ai didi

ms-access - Ms Access 中的 DoEvents 语句出现 "Invalid use of Null"错误

转载 作者:行者123 更新时间:2023-12-02 11:27:31 25 4
gpt4 key购买 nike

我在 Access 中遇到了奇怪的情况。通常,Invalid use of Null 错误非常简单 - 将 null 分配给字符串变量或类似变量。但我在一个在我看来不应该发生的地方遇到了错误。这是代码片段:

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

发生的情况是,我只是有时会收到此错误,通常只是在我一段时间以来第一次运行代码时。如果我关闭数据库并立即重新打开它,通常不会收到错误消息。它已经让我发疯了很长一段时间,所以我放入了所有这些“If Err <> 0 then Stop”语句,试图追踪它发生的位置。这是一个实时系统,用户知道只需重新启动应用程序,但它是一个庞大的 PIA,启动起来有点尴尬。

有人能想到一些可以尝试或检查的东西吗?我并不是 Access 方面的业余爱好者,但这远远超出了我遇到过的任何东西。为什么 DoEvents 语句应该生成这样的错误超出了我的范围,特别是因为即使在应该生成这样的错误的前面的语句中我也没有做任何事情,它可能会以某种方式“保留”,直到处理器有机会抛出错误。如果我取出 DoEvents,我只会在更远的地方得到相同的错误。 txtMaxCisla 是 Form_Akces 表单上的未绑定(bind)文本字段,从中调用包含此代码的例程。它仅在启动时发生 - 一旦所有内容都加载并运行,这种情况就不会再发生。而且这种情况只是偶尔发生一次 - 我无法检测到任何模式。

它已经持续了几个月,经历了无数次编译、反编译、重新编译、压缩和修复周期,没有明显的变化,除了有时它发生在其他地方,同样没有我能看到的原因。

  • 更新*

不走运 - 它仍然崩溃,而且我完全看不出任何原因。现在是代码:

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”。我意识到这段代码完全是迟钝的,但这是回溯的结果,试图找到错误的根源。如果没有这个,它就会在路上的某个地方崩溃,并出现同样的错误。目前我想不出还有什么可以尝试的。

最佳答案

我对代码中的 Form_Akces 感到困惑。如果我创建一个名为 Akces 的表单,则该表单的代码模块名为 Form_Akces。但你说“在 Form_Akces 表格上”。所以我很困惑 Form_Akces 是表单的名称还是表单的代码模块。也许Access也很困惑。

无论哪种方式,既然您说代码位于表单的代码模块中,我建议您用 Me 替换 Form_Akces

编辑:我误解了你的情况。您向我们展示的代码实际上来自另一个代码模块中的过程,而不是表单的代码模块。在这种情况下,我会对外部过程执行类似的操作 DoSomething:

Public Sub DoSomething(ByRef frm As Form)
bch = frm.txtMaxCisla.BackColor
frm.txtMaxCisla.BackColor = vbYellow
DoEvents
' whatever else you need
End Sub

然后在表单的代码模块中调用 DoSomething:

DoSomething Me

如果 DoSomething 每次仅对单个控件进行操作,则您可以只传递对该控件的引用。

Public Sub DoSomething(ByRef ctl As Control)

此方法将允许 DoSomething 重新用于其他表单,而无需进行任何更改,因为目标表单名称不是“硬连线”到过程中的。此外,如果您重命名 Akces 表单,它也不会中断。在第二种变体中,它还将适应控件名称的更改。

关于ms-access - Ms Access 中的 DoEvents 语句出现 "Invalid use of Null"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9973200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com