显然,在表名,字段名和控件名中包含空格是一个坏主意(因为它几乎用作当今商业上使用的所有命令式编程语言中的分隔符*)。你必须用[]等来包围那些控件和字段。我试图向其他人展示另一个空格问题。
我似乎记得有一种情况可能出现,因为字段名称中有空格(例如“Foo ID”),基于它的控件也称为“Foo ID”,你可以结束意外引用基础字段而不是控件。
例如,您将Foo ID从空更新为“hello world”,然后您需要在保存记录之前检查null值;像“我。[Foo ID]”之类的东西返回Null而不是“Hello World”如何复制此意外行为?
(* - Lisp,Prolog和APL不是命令式编程语言)
答案 0 :(得分:1)
由于控件名称在使用表单的默认控件属性(即Me.Foo_ID
)在代码中引用时,中不能包含空格,因此空格将替换为下划线。 因此,在您的示例中, (即使这个陈述在进一步考虑时显得不正确:Me.Foo_ID
将引用控件,但Me![Foo ID]
将引用基础字段。Me![Foo ID]
几乎肯定会引用名为“Foo ID”的控件。)
正如David Fenton正确指出的那样,控件本身可以以空格命名。当引用如下时,它可以在带有空格的代码中引用:Me.Controls("Foo ID")
或Me![Foo ID]
,因为这些形式可以正确处理空格。但是如果你想使用速记,你需要添加下划线:Me.Foo_ID
。
在这种情况下, Me.Foo_ID
会在保存记录之前返回“Hello World”(表单为Dirty
),但Me![Foo ID]
将返回Null。
编辑:经过一些测试后,我无法真正重现你所追求的奇怪行为(使用几种不同的组合)。
感谢大卫芬顿让我直截了当(如果我还在某个地方,请告诉我。)