ms-access - 字段和控件名称中的空格引起的问题

标签 ms-access

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

我似乎记得有一种情况可能会出现,因为字段名称中包含空格(例如“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/

相关文章:

forms - 如何在运行时将 Microsoft Access 表单 View 从单一表单更改为连续表单?

sql - ms 在查询中从文件 Access 导入表

sql - 使用 ComboBox 值作为 SQL 查询的一部分? (MS Access 2010-2013)

java - 微软access数据库转java

ms-access - 表格中的记录未显示在表格中

debugging - Microsoft JET SQL 查询日志记录或 "How do I debug my customer' 程序?”

vba - 设置文本框VBA的控制源

database - 使用 VB.Net 中的文本框和搜索按钮在数据库中查找记录

java - 无需 ODBC 驱动程序即可读取 MS Access 数据库

java - 使用java比较和更新数据时如何解决巨大的性能问题?