DLOOKUP 返回#NAME? IIF 语句中的错误
Posted
技术标签:
【中文标题】DLOOKUP 返回#NAME? IIF 语句中的错误【英文标题】:DLOOKUP returning #NAME? error in IIF statement 【发布时间】:2017-08-22 15:25:44 【问题描述】:我有一个表格用来报告表格中的数据。对于我的文本框控件,我必须使用 DLOOKUP 来显示我想要的值,否则它会显示索引号。这是我为文本框提供的代码,它确实显示了值:
DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK])
到目前为止,一切都很好。我现在遇到的问题是,如果有一个空值,DLOOKUP 会返回一个#Error 代码。
我找到了一个使用 IIF 语句和 ISNULL 的解决方案:
IIf(IsNull([WELL_MASTER]![FIRST_FRM_FK]),"",DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]))
当我在查询中尝试这个时,效果很好;但是,当我将表达式放入文本框控件时,DLOOKUP 会返回 #Name 错误。
关于如何解决此问题的任何建议? Google foo 又让我失望了。
谢谢!
更新:
好的,我已经尝试了以下方法:
每分钟:Nz(DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]),0)
DLookup 函数部分有效,但空值返回为 #Error。
每科斯塔斯 K:Nz(DLookUp("FORMATION_NAME","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]),0)
与 Minty 的建议相同。
使用 Is Null 与 ISNULL 函数包装在 IIF 语句中:
IIf([WELL_MASTER]![FIRST_FRM_FK] Is Null,"",DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]))
我回到了 DLookup 函数返回 #Name 错误的原始问题。
这是一个奇怪的事情——如果 IIF 语句表达式在查询中,它们就可以工作。当我将表达式复制到 DLookup 失败的文本框控件时。 DLookup 函数在文本框表达式中可以正常工作,只要它周围没有任何内容。将其放入 IIF 语句的那一刻,它就会停止工作。
对于它不喜欢的文本框控件有什么想法吗?
感谢 Minty 和 Kostas K 试图帮助我解决这个问题。 :)
【问题讨论】:
如果这是一个查找字段,您可以使用组合框直接显示该值。或者使用 Nz() 函数Nz(DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]),0)
谢谢,明蒂!不能为此使用组合框,但您的 Nz 功能有效。我以前试过这个,但一定是结构不正确。
该死!我认为它有效,但是当我查看表中的测试记录时,测试空字段中有一个 0。我将其清除并在表单中再次查看并收到#Error 消息。 DLookup 部分工作,但 NZ 部分不工作。还有其他想法吗?
从FORMATION_NAME
中删除[]
括号。
【参考方案1】:
使用 Nz() 函数
Nz(DLookUp("[FORMATION_NAME]","R_FORMATIONS","[FORM_ID]=" & [FIRST_FRM_FK]),0)
【讨论】:
没用。一开始我以为是这样,但没有这样的运气。 我可能只是将数据直接放入底层查询的表单中。使用左连接,如果需要,您应该仍然可以编辑表单上的数据。 它已经在底层查询中。问题是它是一个绑定到引用表的外键。如果我可以使用组合框,我可以只指定列数,但该选项不适用于文本框,并且必须在文本框中。 然后将参考表连接到存储在主表中的 FK 并从中提取文本。然后显示它而不是 FK。 我在主表中有 3 列引用回同一个引用表。我可以将引用表添加并连接到主表中的一列,但是连接所有三列的表不会返回任何结果,并且将引用表添加 2 次并将每列连接到一个引用表不会返回任何结果。这就是我最终选择 DLookup 路线的原因。以上是关于DLOOKUP 返回#NAME? IIF 语句中的错误的主要内容,如果未能解决你的问题,请参考以下文章