问题描述
我正在进行访问查询。有一个带有是/否框的字段。查询条件参数是 IIf([Type True or All]="True",-1,>-2)
。但即使它评估为假,它也只返回是,在访问中是 -1,而不是是和否,在访问中是 -1 和 0。如果我将条件设置为 >-2,那么它同时返回是和没有。
解决方法
运算符(=、>、LIKE 等)不能是动态的。运算符必须是静态的,然后 IIf() 返回参数。
可以这样做:
WHERE fieldname LIKE IIf([Type True or All] = "True",-1,"*")
或者减少用户输入:
WHERE fieldname LIKE IIf([Type "T" for True or "A" for All] = "T","*")
。
或者这个:
WHERE fieldname LIKE Choose([Type 1 for True,2 for False,3 for All],"*")
或用于文本字段:WHERE fieldname LIKE IIf([enter value or ALL]="ALL","*",[enter value or ALL])
我不使用动态参数化查询 - 我更喜欢 VBA 来构建标准并应用于表单或报告。特别建议不要使用弹出式输入,因为它们无法验证,表单上的输入可以。