访问TempVars不要编译

时间:2017-06-15 04:44:57

标签: vba ms-access-2010

我已经使用TempVars一段时间了,但是在Access 2010数据库中遇到了一些问题。

每当我尝试编译时,都会出现一个错误对话框,指出"方法或数据成员未找到"出现并突出显示TempVars一词。

以下是相关代码段:

If TempVars("Connected") And TempVars("HasAccessBE") And Me.chkBackupOnExit Then MakeBackup

虽然我之前成功使用了TempVars("xx")" xx"是使用TempVars.Add "xx", "yy"

在其他地方定义的变量

在这种情况下,编译器会以某种方式认为TempVars不是可行的代码。

这些也已经过检查:

  • Application.TempVars("xx")
  • TempVars.Item("xx")
  • 搜索名为TempVars的用户定义变量( none found
  • 已通过TempVars.Add "xx", "yy"定义了所需变量(

如果这是腐败的事情,还完成了以下任务:

  • Database Compact&修复
  • 数据库反编译

我试图解决这个问题,以便我可以编译并继续前进。代码对用户来说很好,但是仍然需要编译。

有关如何解决问题的任何想法?

2 个答案:

答案 0 :(得分:1)

添加到TempVars集合时,需要定义名称和值。然后,您可以按名称检索值。

TempVars.Add(name As String, value)

工作示例:

Sub Test()
    Dim b As Boolean
        b = True

    TempVars.Add "bool", b

    Debug.Print TempVars("bool")
End Sub

'True

答案 1 :(得分:1)

非常有趣的行为。

这为我编译:

If TempVars("Connected") And TempVars("HasAccessBE") Then Debug.Print "Yay!"

如果TempVars不存在,我将收到运行时错误,而不是编译错误。
实际上甚至不是这样,他们只返回Null

这不编译:

If TempVars("Connected") And TempVars("HasAccessBE") Then WrongFunction

但是:编译器选择第一个TempVars并说“Sub或Function not defined”。而不是选择问题所在的WrongFunction

=>该错误不在TempVars中,而是在语句的其余部分。

从错误消息判断,我会说Me.chkBackupOnExit不存在/拼写错误。

修改:要查看正在进行的操作,请将代码行更改为

If Me.chkBackupOnExit Then MakeBackup

并尝试编译它。