2017-06-15 59 views
1

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

每当我尝试编译时,会出现一个错误对话框,指出“找不到方法或数据成员”,并且术语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没有发现
  • 所需的变量已通过TempVars.Add "xx", "yy"被定义(它是

如果这是一个腐败的事情,以下任务也已完成:

  • 数据库压缩&修复
  • 数据库反编译

我试图解决这个,所以我可以编译并前进。该代码对用户来说功能很好,但仍需编译。

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

回答

1

非常有趣的现象。

这编译对我来说:

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

如果不存在TempVars的,我会得到一个运行时错误,而不是一个编译错误。
其实不是这个,他们只是返回Null


这并不编译:

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

但:编译器选择第一TempVars并说 “Sub或函数未定义”。而不是在问题出在哪里选择WrongFunction

=>错误不在TempVars中,但在声明的其余部分。

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


编辑:要看看发生了什么事情,改变你的代码行

If Me.chkBackupOnExit Then MakeBackup 

,并尝试进行编译。

+0

谢谢安德烈把我推向正确的方向!问题根本不在于TempVars,而是问题在于引用了应该是Me.subformname.Controls(“chkBackupOnExit”)的子窗体控件(Me.chkBackupOnExit)。出于某种原因,我被困在突出显示中,未能“看到”控制参考问题。试图说明IDE有时候并没有让我们到达需要突出显示的地方,但至少它将我们的眼睛拉到了合适的线路/区域。再次感谢。问题解决了!! – NWdev

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 
+0

是的,这是正确的,但请注意,我已经检查过该值是否已经通过TempVars.Add正确添加,但对于那些不熟悉这个过程的人来说很好澄清。 – NWdev

+0

你说'“xx”'是一个在别处定义的变量 - 这需要是TempVar的名称。 –

+0

“xx”只是一个泛化。是的,它确实需要是大多数使用TempVars的人应该知道的TempVar的名称。 – NWdev