Ms access 将条件设置为value或Null

Ms access 将条件设置为value或Null,ms-access,Ms Access,我有一个access数据库,其中有一个显示质量评估的表格。我希望用户能够单击复选框(flgFailed),该复选框只显示失败的QA。失败的字段名是MovedToResolution,它是一个复选框,0是一个失败。如果未选中此项,我希望他们查看所有QA,无论其失败状态如何。我在网络搜索的基础上尝试了一个IIF声明,如下所示 IIf([Forms]![MainMenu]![ManagersMenu].[Form]![flgFailed]=0,[MovedToResolution] Is Null,[

我有一个access数据库,其中有一个显示质量评估的表格。我希望用户能够单击复选框(flgFailed),该复选框只显示失败的QA。失败的字段名是MovedToResolution,它是一个复选框,0是一个失败。如果未选中此项,我希望他们查看所有QA,无论其失败状态如何。我在网络搜索的基础上尝试了一个IIF声明,如下所示

IIf([Forms]![MainMenu]![ManagersMenu].[Form]![flgFailed]=0,[MovedToResolution] Is Null,[MovedToResolution]=False) 
…在字段名中,此表达式的条件中为False


但是,无论是否选中flgFailed,在运行查询时都不会得到任何记录。当我在没有这个表达式的情况下运行查询时,它运行得很好。我也尝试过用-1/0替换真/假的值,但没有成功。任何帮助都将不胜感激

假设
ManagersMenu
是一个子表单控件,并且表达式
[Forms]![主菜单]![ManagersMenu].[Form]![flgFailed]
如果返回所需的值,我会将条件表达式更改为

Not [Forms]![MainMenu]![ManagersMenu].[Form]![flgFailed] Or [MovedToResolution] = 0
但是,在标准表达式中,
MovedToResolution
指的是表格列,而不是
复选框
,因此是否测试
0
False
取决于列的类型。如果声明为整数,则
0
可以;但是,如果是
Yes/No
列,则使用

Not [Forms]![MainMenu]![ManagersMenu].[Form]![flgFailed] Or Not [MovedToResolution]

布尔表达式应与
组合使用
IIf
是基于布尔表达式返回其他类型的值。

是/否字段从不为空。它们是-1或0。因此,如果您想要所有记录,则需要删除该条件或尝试使用*通配符。我从不使用动态参数化查询。查看并抱歉,我希望查询条件为空,而不是复选框字段。我试图得到一个查询,我有时可以限制为失败的响应。当我想同时看到true和false记录时,我需要查询中的条件为null。运算符(,LIKE,Is null等)不能是动态的。您的IIf条件正在尝试更改运算符。Olivier的答案看起来很有希望,但Flag failed可能是两个值之一。如果我想将其限制为仅失败,则为-1;如果我不想,则为0。MovedtoResolution还引用本身引用表列的查询列。我想更改标准,而不是表中字段的值。这不会更改任何值,而是一个标准。正确的语法取决于列的数据类型表示移动到解析的值可以是:不是表单控件的值,也不是MovedToResolution记录的值?这表示未选中
flgFailed
,或者
MovedToResolution
不是
True
或者
-1
(取决于表列的数据类型)。