MS Access DLookup 文本字段语法问题

Posted

技术标签:

【中文标题】MS Access DLookup 文本字段语法问题【英文标题】:MS Access DLookup text field syntax issues 【发布时间】:2021-02-25 19:43:32 【问题描述】:

在 Access 中遇到 DLookup 语法错误。

我正在尝试从表 [tbl_model_number] 中返回位于列 [fld_linear_foot] 中的值——我的条件列标题为 [fld_model_number_official],并且条件列必须与我表单上的组合框 [cbx_model_number]selection 匹配。

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

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

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

谁能解释一下这个简单的 Dlookup 出了什么问题?

【问题讨论】:

【参考方案1】:

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

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

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

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

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

=[cbx_model_number].[Column](2)

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

【讨论】:

“更好的方法是在组合框行源中包含 fld_linear_foot 并按索引引用组合框列。”。这太棒了,而且是一个更好的解决方案。甚至没有想到这一点。我花了一分钟才弄明白,但效果很好! 很高兴为您提供帮助。感谢您接受答案。点赞也总是很好。

以上是关于MS Access DLookup 文本字段语法问题的主要内容,如果未能解决你的问题,请参考以下文章

MS Access使用DLookup的结果循环

查询或 dsum 中的 MS Access 性能 dlookup?

无法让 DLookup 函数在 Access 2013 中工作

MS Access 2013:通过 VBA 使用 MS Word 的语法检查

ms访问dlookup函数报错

Microsoft Access - 具有来自不同表的多个条件的 Dlookup