gpt4 book ai didi

vba - 使用 Option Explicit 的 MS Access VBA 给出 "Variable not defined"错误,但适用于不同的数据库

转载 作者:行者123 更新时间:2023-12-04 14:32:52 24 4
gpt4 key购买 nike

我正在将表单从一个 Access 数据库移到另一个。当我尝试编译新数据库时,它给出了“ undefined variable ”错误。这仅在使用 Option Explicit 时发生。该变量是表单的 SQL 查询选择的 AccessField 数据类型。这在我从中移动它的 Access 数据库上编译得很好,所以我完全迷失了试图找出问题所在?

我似乎遇到了在这个旧线程中从未解决过的完全相同的问题:https://bytes.com/topic/access/answers/896346-variable-not-defined-error-field-exists

不止一个例子。当使用 Option Explicit 时,任何引用未声明为变量的 AccessField 的内容都将返回该错误。

例如,表单正在使用查询:

Select * from BM where ClientID =143 and Month(BMDate) = 4 and year(bmdate) =2018 order by bmdate

并且该表单内的 VBA 代码将在此处失败并出现该错误:
Option Explicit
Option Compare Database

Private Sub Form_Load()
If IsNull(RecNbr) Then
'Code fails with RecNbr on line above when I try to compile
'RecNbr is a field selected from the query and is not declared as a variable
End If
End Sub

最佳答案

这可能有效,也可能无效,但评论太长了。

This post在您的链接线程中似乎有一个解释:

In the form design view, the Field List and the drop-down for the Control Source for a control reflect the current table design; but VBA seems to have a stale copy of the form's recordsource schema.



试试这个来重新同步记录源的 VBA 缓存(?):
  • 在表单设计中,删除记录源(如有必要,将其保存在文本编辑器中)
  • 保存并关闭表格
  • 也许压缩并修复数据库(我不知道这是否会改变行为)
  • 在设计 View 中重新打开表单
  • 设置记录源。请注意在点击 Return 后,Access 会花一点时间,然后绑定(bind)控件的警告三角形应该消失。
  • 看看代码现在是否可以编译。

  • 作为说明,我发现使用 Me.RecNbr 时代码可读性更好。而不是 RecNbr在引用表单控件或字段时(与 VBA 变量相反)。

    如果上面还是不能编译,可以使用 Me!RecNbr .

    有用的阅读: Bang Notation and Dot Notation in VBA and MS-Access

    关于vba - 使用 Option Explicit 的 MS Access VBA 给出 "Variable not defined"错误,但适用于不同的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52341636/

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