MS Access DLookup 文本字段语法问题

问题描述

在 Access 中遇到 DLookup 语法错误

我试图从表 [fld_linear_foot] 中返回位于 [tbl_model_number] 列中的值——我的条件列标题[fld_model_number_official],并且条件列必须与组合框 {{ 1}}在我的表单上选择。

[cbx_model_number]

但是,这会得到一个“#NAME?”错误,我认为是因为存储在 fld_model_number_official 中的数据是基于文本的,而不是基于数字的。

我相信大部分错误问题源于 [fld_model_number_official] 存储为文本,而不是数字。但是,我尝试了多种引号布局,试图将其视为文本,但都没有奏效。

谁能解释一下这个简单的 Dlookup 哪里出错了?

解决方法

将对象名称括在引号中。嵌入组合框的完整路径引用应该可以工作。

=DLookUp("[fld_linear_foot]","[tbl_model_number]","[fld_model_number_official]=[Forms]![frm_estimator]![cbx_model_number]")

或者连接变量引用。如果字段是文本类型,请使用撇号分隔符。

=DLookUp("[fld_linear_foot]","[fld_model_number_official]='" & [cbx_model_number] & "'")

但是,域聚合函数会降低性能。更好的方法是在组合框 RowSource 中包含 fld_linear_foot 并按索引引用组合框列。如果数据在第 3 列,则其索引为 2:

=[cbx_model_number].[Column](2)

另一种方法是在表单 RecordSource 中包含查找表并将文本框绑定到字段。将这些控件设置为 Locked Yes 和 TabStop No 以防止编辑。