我有一个MS访问表单,其中包含运行查询的可选标准。用户将选中一个复选框并输入一个值,然后根据所选字段和输入运行查询。特别是我对一个字段的问题是表存储NULL值。查询的条件如下所示:
IIf([Checkbox]=-1,[Data in Form],([Field]Like "*" Or [Field]Is Null))
如果我将此代码用作查询字段的条件,则仅当表单中的值和选中复选框时才有效。如果我将代码用作表达式,则在未选中复选框时返回NULL值,但在选中复选框并输入值时返回所有记录。如果我使用Like "*" or Is Null
作为标准,它会返回所有记录,那么为什么它不作为IIF语句的一部分工作呢?
答案 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 )