Access中DLookup函数返回错误或空值的问题求助
Access中DLookup函数返回错误或空值的问题求助
问题描述
我希望在表单字段中通过名称从指定查询中获取对应的金额值,但当前使用的DLookup函数要么报错,要么返回空字段,无法正常显示数据。我写的函数代码如下:
=DLookUp("[Výpočet vaplacené peníze od číšníků Dotaz]![Sum Of Vyplaceno]"; "[Výpočet vaplacené peníze od číšníků Dotaz]"; "[Jméno_Tabulka výplaty manažer 1].[Column](1)"= "[Výpočet vaplacené peníze od číšníků Dotaz]![Personál jméno]" )
问题分析与解决方案
你的DLookup函数存在几个明显的语法和逻辑问题,我来帮你拆解并修正:
1. 字段参数的冗余前缀
DLookup的第一个参数是要返回的目标字段名,不需要带上查询的前缀([查询名]!),直接写字段本身的名称Sum Of Vyplaceno就可以了。
2. 条件语句的逻辑错误
你当前的条件写法是在比较两个字段名的字符串,而不是控件的实际值和查询字段的值。另外,字符串类型的匹配条件必须用单引号包裹变量值,同时要正确引用表单控件的属性。
3. 控件引用的正确方式
如果Jméno_Tabulka výplaty manažer 1是当前表单上的组合框,要获取它的第二列(Column(1))的值,直接引用该控件的属性即可,不需要额外的冗余语法。
修正后的最终代码
根据你的需求,修正后的DLookup函数如下(注意参数分隔符用分号,符合捷克语Access的设置;如果是英文环境,请将分号替换为逗号):
=DLookUp("Sum Of Vyplaceno"; "[Výpočet vaplacené peníze od číšníků Dotaz]"; "[Personál jméno] = '" & [Jméno_Tabulka výplaty manažer 1].[Column](1) & "'")
额外检查要点
- 确认组合框
Jméno_Tabulka výplaty manažer 1的Column(1)确实包含正确的名称值,且与查询中Personál jméno字段的内容完全匹配(包括空格、特殊字符,Access字符串匹配通常不区分大小写,但特殊场景需注意)。 - 先单独运行查询
[Výpočet vaplacené peníze od číšníků Dotaz],确认它能正常返回Sum Of Vyplaceno和Personál jméno字段的有效数据。
备注:内容来源于stack exchange,提问作者Miroslav Gédus
相关产品推荐
相关产品推荐

