显然,在表名、字段名和控件名中包含空格是一个坏主意(因为它在当今商业使用的几乎所有命令式编程语言中都用作分隔符*)。您必须用 [] 等包围这些控件和字段。我正在尝试向其他人演示空格的另一个问题。
我似乎记得有一种情况可能会出现,因为字段名称中包含空格(例如“Foo ID”)并且基于它的控件也称为“Foo ID”,因此您可以最终意外地引用了底层字段而不是控件。
例如,您将 Foo ID 从空更新为“hello world”,然后您需要在保存记录之前检查该值是否为 null;类似“me.[Foo ID]”返回 Null 而不是“Hello World”
如何复制这种意外行为?
(* - Lisp、Prolog 和 APL 不是命令式编程语言)
最佳答案
由于当您使用表单的默认控件属性(即 Me.Foo_ID
)在代码中引用控件时,控件名称中不能包含空格,空格被下划线替换。 因此,在您的示例中,(即使这个陈述在进一步考虑时也显得不正确:Me.Foo_ID
将引用 control,但 Me![Foo ID]
将引用 < em>底层字段。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。
编辑:经过一些测试,我无法真正重现您所追求的奇怪行为(使用几种不同的组合)。
感谢 David Fenton 为我指点迷津(如果我还在某处,请告诉我)。
关于ms-access - 字段和控件名称中的空格引起的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170985/