IIF空白如果不运行内容

时间:2014-03-27 13:18:52

标签: vba ms-access access-vba

我有一个搜索查询,只需按一下按钮即可运行,并搜索子表单内容。它有5个课程选项,除非选择了课程,否则所有选项的默认值都为NULL。这使它更加用户友好。我正在尝试设置搜索代码以清除组合框(如果它为空),如果不是,则将其保留。我正在尝试下面的代码,它不起作用:

Like "*" & [Forms]![frmCDData]![cboDevelopment1] & "*" And iif([Forms]![frmCDData]![cboDevelopment1],= NULL, "", = [Forms]![frmCDData]![cboDevelopment1])

我收到错误,说上面的代码有错误的参数数量。是否有任何其他想法或方法来修复上述代码?

在没有IIF的情况下,代码本身就是这样的。

Like "*" & [Forms]![frmCDData]![cboDevelopment1] & "*"

4 个答案:

答案 0 :(得分:0)

看起来你在= NULL之前有一个额外的逗号 试试这个,

Like "*" & [Forms]![frmCDData]![cboDevelopment1] & "*" And iif([Forms]![frmCDData]![cboDevelopment1]= NULL, "", [Forms]![frmCDData]![cboDevelopment1])

答案 1 :(得分:0)

在此部分iif([Forms]![frmCDData]![cboDevelopment1],= NULL中,您的字段值与=null之间有一个额外的逗号。这导致您的声明认为它正在接收4个参数而不是3个。

答案 2 :(得分:0)

虽然其他人已经指出了额外的逗号,但还有一些其他问题。你需要在“Null”这个词周围加上引号,因为它是一个字符串。此外,您不希望在最后一个参数中使用=

IIf([Forms].[frmCDData].[cboDevelopment1]="Null","",[Forms].[frmCDData].[cboDevelopment1])

答案 3 :(得分:0)

我想你想要

WHERE Table1.AText=[Forms]![frmCDData]![cboDevelopment1]
   OR table1.AText = 
     IIf(Not IsNull([frmCDData]![cboDevelopment2]),[frmCDData]![cboDevelopment1],"")

根据您的说法,您正在运行查询。你有组合,所以文字应该是准确的,你不需要像。