VB access 查询问题 ,提示“ 标准表达式中数据类型不匹配”,如何解决?

2025-02-27 02:05:16
推荐回答(1个)
回答1:

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代码就简单多了