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 文本字段语法问题的主要内容,如果未能解决你的问题,请参考以下文章
查询或 dsum 中的 MS Access 性能 dlookup?
无法让 DLookup 函数在 Access 2013 中工作