MS Access DLookup多次查找运行时错误13类型不匹配

问题描述 投票:0回答:3

我认为这是一个简单的问题,但我必须遗漏一些东西。

这行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类型不匹配

vba ms-access access-vba
3个回答
1
投票

你很亲密试试这个:

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

请注意,我也添加了一些括号。


3
投票

这是因为你需要再次编写比较,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

1
投票

查找仅返回一个结果,但您可以在条件中添加所需的结果并计算返回的结果。

If Me.To = 340 And DCount("[LocID]", "[qryMyLocation]", "[LocID] = 'C25' Or [LocID] = 'C20'") > 0 Then
© www.soinside.com 2019 - 2024. All rights reserved.