in子句只能在SQL语句里使用,另外in里面的数字也不要加引号。而在IIF函数的内部其判断表达式里是不能使用“in”的,因为VB不支持它。如果要判断某个表达式的是否属于多个值只能使用多个or运算符,但是这样一来判断表达式会变得非常庞大和复杂,其运行效率也会很不好。建议编写下列自定义函数取代提问中的IIF函数筛选表达式。
新建一个“模块1”,复制一下代码到该模块
Public Function myCnt(c1, c2, c3, c4, c5, c6) As Byte
Dim n(1 To 6) As Byte, nSum As Byte, m
For i = 1 To 6
If i = 1 Then m = c1
If i = 2 Then m = c2
If i = 3 Then m = c3
If i = 4 Then m = c4
If i = 5 Then m = c5
If i = 6 Then m = c6
Select Case m
Case 6, 15, 18, 21, 26, 27
n(i) = 1
Case Else
n(i) = 0
End Select
nSum = nSum + n(i)
Next i
myCnt = nSum
End Function
保存后,就可以在SQL语句里调用这个函数了。调用函数的代码如下:
SELECT * FROM 位列生号 where myCnt(红1,红2,红3,红4,红5,红6)=5;
这样处理后SQL代码就简单多了