DLookup无论设置何种筛选条件均返回列表首个字段值问题咨询
问题原因
DLookup的第三个筛选参数要求传入字符串格式的筛选条件,你当前的写法没有把条件拼接为字符串,Access无法读取Me.LaborType的动态取值,导致筛选条件实际无效,永远返回查询表的第一条LaborCost记录值。
解决方法
根据你LaborTypesAndCost表中LaborType字段的类型,选择对应写法:
- 如果
LaborType是数值类型(比如工种ID、数字编码):
[LaborCost1] = DLookup("LaborCost", "LaborTypesAndCost", "LaborType = " & Me.LaborType)
- 如果
LaborType是文本类型(比如工种名称、文本编码):
需要对取值额外加单引号包裹,同时用Replace处理取值本身含单引号的异常场景:
[LaborCost1] = DLookup("LaborCost", "LaborTypesAndCost", "LaborType = '" & Replace(Me.LaborType, "'", "''") & "'")
可选优化
如果需要处理无匹配值时返回Null的问题,可搭配Nz函数设置默认值:
' 数值类型示例,无匹配时默认返回0 [LaborCost1] = Nz(DLookup("LaborCost", "LaborTypesAndCost", "LaborType = " & Me.LaborType), 0)
排查验证
可以在代码中添加Debug.Print Me.LaborType,打开VBA编辑器的立即窗口,每次修改组合框取值时确认Me.LaborType是否正常更新,排除组合框绑定列设置错误的问题。
内容的提问来源于stack exchange,提问作者Jesse
相关产品推荐
相关产品推荐

