首先介绍一下:我在Access中有一个绑定到表的表单。我之前正在讨论一个恼人的错误,所有对Format(...)
函数的调用都抛出type mismatch
错误,无论它作为参数给出了什么。更令人困惑的是,错误只发生在表单打开时 - 在我可以输入的即时窗口中:
? Format(#17 March 2015#, "dd MMM yyyy")
如果表单已关闭,则触发此代码将返回预期结果。当它打开时,它扔了type mismatch
。混乱。
我最终跟踪了这个问题 - 表格中绑定到表单的字段名为格式,这是 shadowing Format()
函数,所以VBA试图将表字段视为函数并出错。
我关闭了表单,进入表设计并将Format列重命名为RequestFormat,期待这个问题消失。不幸的是,VBA似乎有一个东西,一旦定义就会严格地依附于事物,并且仍然为现在不存在的表字段维护一个条目,该字段继续遮蔽Format()
函数。我可能会添加一个条目,也不能作为表字段引用,因为任何尝试调用它都会提示Access告诉我它找不到名为Format
的字段。因为它不存在。
因此,我需要以某种方式让Access重建其绑定表单的内部字段列表,并摆脱现在已故的格式字段。有什么想法吗?
为了证明我没有疯狂,这是在一个绑定到同一个表的全新表单上输入Format
时IDE中的intellisense:
这里是我原来的形式,仍然显示最近去世的格式属性,不应该仍然存在:
答案 0 :(得分:2)
您可以通过完全限定VBA Format
函数来回避命名空间冲突问题,如下所示:
VBA.Format(#17 March 2015#, "dd MMM yyyy")
答案 1 :(得分:1)
看看你是否可以使用Access"忘记"关于不再存在的领域。
使用新名称保存当前表的副本。然后在表格的记录来源中使用该新名称。
(注意:Kai报告任何旧表更改都有效 - 它不需要相同的表结构。)
如果Access不再认为存在名为 Format 的字段,请再次将记录源更改回旧表名,看看它是否仍然忘记了格式字段。