刷新Access绑定表单内部字段列表
Refresh Access bound form internal field list
首先介绍一些背景知识:我在 Access 中有一个表单绑定到 table。我之前遇到了一个恼人的错误,所有对 Format(...)
函数的调用都会引发 type mismatch
错误,无论它作为参数给出的是什么。更令人费解的是,该错误仅在表单打开时发生——我可以立即 window 输入:
? Format(#17 March 2015#, "dd MMM yyyy")
如果表单已关闭,触发此代码将 return 预期结果。打开的时候抛出type mismatch
。令人困惑。
我最终找到了问题 - table 中绑定到表单的一个字段被命名为 Format,这是 shadowing Format()
函数,因此 VBA 试图将 table 字段视为函数并出错。
我关闭了表单,进入 table 设计并将 Format 列重命名为 RequestFormat,希望问题能够顺利解决。不幸的是,VBA 似乎有一种东西一旦定义就永远死死地抓住东西,并且仍然为现在不存在的 table 字段维护一个条目,该字段继续遮蔽 Format()
函数.我可能会添加一个条目,它也不能被引用为 table 字段,因为任何尝试这样调用它都会提示 Access 告诉我它找不到名为 Format
的字段。因为它不存在。
因此,我需要以某种方式获取 Access 以重建其绑定表单的内部字段列表并摆脱现已失效的格式字段。有什么想法吗?
为了证明我没疯,下面是 IDE 中的智能感知,当 Format
在绑定到相同 table 的全新表单上输入时:
这里是我原来的表格,仍然显示最近去世的格式 属性 不应该还在那里:
您可以通过完全限定 VBA Format
函数来回避命名空间冲突问题,如下所示:
VBA.Format(#17 March 2015#, "dd MMM yyyy")
看看是否可以对不再存在的字段进行访问"forget"。
使用新名称保存当前 table 的副本。然后在表单的记录源中使用该新名称。
(注意:Kai 报告任何旧的 table 更改都有效 --- 它不需要相同的 table 结构。)
如果 Access 不再认为有一个名为 Format 的字段,请再次将记录源更改回旧的 table 名称,看看它是否仍然忘记了格式 字段。
首先介绍一些背景知识:我在 Access 中有一个表单绑定到 table。我之前遇到了一个恼人的错误,所有对 Format(...)
函数的调用都会引发 type mismatch
错误,无论它作为参数给出的是什么。更令人费解的是,该错误仅在表单打开时发生——我可以立即 window 输入:
? Format(#17 March 2015#, "dd MMM yyyy")
如果表单已关闭,触发此代码将 return 预期结果。打开的时候抛出type mismatch
。令人困惑。
我最终找到了问题 - table 中绑定到表单的一个字段被命名为 Format,这是 shadowing Format()
函数,因此 VBA 试图将 table 字段视为函数并出错。
我关闭了表单,进入 table 设计并将 Format 列重命名为 RequestFormat,希望问题能够顺利解决。不幸的是,VBA 似乎有一种东西一旦定义就永远死死地抓住东西,并且仍然为现在不存在的 table 字段维护一个条目,该字段继续遮蔽 Format()
函数.我可能会添加一个条目,它也不能被引用为 table 字段,因为任何尝试这样调用它都会提示 Access 告诉我它找不到名为 Format
的字段。因为它不存在。
因此,我需要以某种方式获取 Access 以重建其绑定表单的内部字段列表并摆脱现已失效的格式字段。有什么想法吗?
为了证明我没疯,下面是 IDE 中的智能感知,当 Format
在绑定到相同 table 的全新表单上输入时:
这里是我原来的表格,仍然显示最近去世的格式 属性 不应该还在那里:
您可以通过完全限定 VBA Format
函数来回避命名空间冲突问题,如下所示:
VBA.Format(#17 March 2015#, "dd MMM yyyy")
看看是否可以对不再存在的字段进行访问"forget"。
使用新名称保存当前 table 的副本。然后在表单的记录源中使用该新名称。
(注意:Kai 报告任何旧的 table 更改都有效 --- 它不需要相同的 table 结构。)
如果 Access 不再认为有一个名为 Format 的字段,请再次将记录源更改回旧的 table 名称,看看它是否仍然忘记了格式 字段。