首页 > 解决方案 > MS Access DLookup 多重查找运行时错误 13 类型不匹配

问题描述

我有一个我认为很简单的问题,但我一定错过了一些东西。

这行 VBA 有效:

If Me.To = 340 And DLookup("[LocID]", "[qryMyLocation]") = "C25" Then

但是,我需要针对 2 个 LocID 进行测试,但这不起作用:

If Me.To = 340 And DLookup("[LocID]", "[qryMyLocation]") = "C25" Or "C20" Then

我错过了什么 - 以上可能吗?

尝试第二行代码时收到错误:运行时错误 13 类型不匹配

标签: ms-accessvba

解决方案


这是因为您需要再次编写比较,VBA 无法将“C20”理解为有效的布尔表达式。

If Me.To = 340 And ((DLookup("[LocID]", "[qryMyLocation]") = "C25" Or DLookup("[LocID]", "[qryMyLocation]") = "C20")) Then

为了获得更快的结果,您可以将 DLookup 存储到一个变量中。

Dim LocID as Variant 'Put the right type here, I think it should be String
LocID = DLookup("[LocID]", "[qryMyLocation]")
If Me.To = 340 And (LocID = "C25" Or LocID = "C20") Then

编辑:由于运算符优先级,我添加了与接受的答案相同的括号。省略括号会导致

If (Me.To = 340 And LocID = "C25") Or LocID = "C20" Then

推荐阅读