【问题标题】:MS Access DLookup text field syntax issuesMS Access DLookup 文本字段语法问题
【发布时间】: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 出了什么问题?

【问题讨论】:

    标签: ms-access


    【解决方案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 并按索引引用组合框列。”。这太棒了,而且是一个更好的解决方案。甚至没有想到这一点。我花了一分钟才弄明白,但效果很好!
    • 很高兴为您提供帮助。感谢您接受答案。点赞也总是很好。
    猜你喜欢
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多