现场和控制名称中的空格引起的问题

时间:2011-03-02 17:16:02

标签: ms-access

显然,在表名,字段名和控件名中包含空格是一个坏主意(因为它几乎用作当今商业上使用的所有命令式编程语言中的分隔符*)。你必须用[]等来包围那些控件和字段。我试图向其他人展示另一个空格问题。

我似乎记得有一种情况可能出现,因为字段名称中有空格(例如“Foo ID”),基于它的控件也称为“Foo ID”,你可以结束意外引用基础字段而不是控件。

例如,您将Foo ID从空更新为“hello world”,然后您需要在保存记录之前检查null值;像“我。[Foo ID]”之类的东西返回Null而不是“Hello World”

如何复制此意外行为?

(* - Lisp,Prolog和APL不是命令式编程语言)

1 个答案:

答案 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。

编辑:经过一些测试后,我无法真正重现你所追求的奇怪行为(使用几种不同的组合)。

感谢大卫芬顿让我直截了当(如果我还在某个地方,请告诉我。)