在IIF语句中使用OR运算符获取空值

时间:2016-09-30 14:16:21

标签: ms-access checkbox null iif

我有一个MS访问表单,其中包含运行查询的可选标准。用户将选中一个复选框并输入一个值,然后根据所选字段和输入运行查询。特别是我对一个字段的问题是表存储NULL值。查询的条件如下所示:

 IIf([Checkbox]=-1,[Data in Form],([Field]Like "*" Or [Field]Is Null))

如果我将此代码用作查询字段的条件,则仅当表单中的值和选中复选框时才有效。如果我将代码用作表达式,则在未选中复选框时返回NULL值,但在选中复选框并输入值时返回所有记录。如果我使用Like "*" or Is Null作为标准,它会返回所有记录,那么为什么它不作为IIF语句的一部分工作呢?

1 个答案:

答案 0 :(得分:0)

发现很难遵循(很多测试数据和期望的结果总是受欢迎的)但我想这样的事情:

标准逻辑重写规则

IF A THEN B

相当于

( NOT A OR B )

所以你的搜索条件可能是这样的:

WHERE ( checkbox1 = FALSE OR field1 = input1 OR field1 IS NULL )
  AND ( checkbox2 = FALSE OR field2 = input2 OR field2 IS NULL )
  AND ( checkbox3 = FALSE OR field3 = input3 OR field3 IS NULL )

更新

更像是:

WHERE NameColumn = NameInput
      AND ( SearchEditioncheckbox = FALSE 
            OR EditionColumn = EditionInput 
            OR EditionColumn IS NULL )

进一步更新

可能是:

WHERE NameColumn = NameInput
      AND ( SearchEditioncheckbox = FALSE 
            OR EditionColumn = EditionInput )

或可能:

WHERE NameColumn = NameInput
      AND ( SearchEditioncheckbox = FALSE 
            OR EditionColumn = EditionInput 
            OR ( EditionColumn IS NULL AND EditionInput IS NULL )