【发布时间】:2017-02-09 03:45:36
【问题描述】:
我有一个 MS 访问表单,其中包含用于运行查询的可选条件。用户将选择一个复选框并输入一个值,然后根据所选字段和输入运行查询。我对一个字段的问题特别是表存储了 NULL 值。查询条件如下所示:
IIf([Checkbox]=-1,[Data in Form],([Field]Like "*" Or [Field]Is Null))
如果我将此代码用作查询中字段的条件,则它仅在表单中有值并且选中复选框时才有效。如果我将代码用作表达式,它会在未选中复选框时返回 NULL 值,但在选中复选框并输入值时返回所有记录。如果我使用Like "*" or Is Null 作为标准,它会返回所有记录,那么为什么它不能作为 IIF 语句的一部分呢?
【问题讨论】:
-
[Field] Like "*" Or [Field] Is Null与TRUE有何不同? -
就像它说的那样,你的条件总是为真(它要么有一个值,要么为空,无论哪种方式都是真的)
-
它有点像过滤器,如果复选框为'TRUE',则使用用户提交的数据指定返回的结果,如果它的'FALSE'返回所有包含NULL值的值
-
@CyberClaw 不确定我是否遵循,条件是复选框,其值可以是 -1 'TRUE' 或 0 'FALSE'
-
重点是,表达式 [Field]Like "*" Or [Field]Is Null 没有做任何事情,因为它应该返回所有内容(它总是正确的)。应该有一种更简单的方法来检索所有记录,例如使用 * 或者将其留空。由于 IIf 可以以多种方式和位置使用,因此很难准确理解它在何处输入该表达式。此外,复选框是布尔值,因此使用 [Checkbox] = True 可能更具可读性,或者只是 [Checkbox]
标签: ms-access checkbox null iif