【发布时间】:2014-11-14 11:21:04
【问题描述】:
我有一个从单个表生成的查询。使用表单为我的查询设置标准我遇到了空值问题。我将在下面简化我的问题。
表格 [许可] 该表称为许可证。我想过滤一个称为状态的字段。在“状态”字段中有以下条目:空值、“已完成”和“已取消”。本质上,null 值表示许可状态是打开的。
在表单中: [FormQuery] 该表单称为 FormQuery,并具有允许用户选择查询条件的复选框。该表单有四个复选框,名称分别为:全部、已完成、打开、已取消。
在查询中:通过 [Permits]![Status] 过滤 查询中有许多字段。唯一具有条件的字段是 (Permits.Status)。输入以下条件:
In (IIf([Forms]![FormQuery]![Completed]=True,"COMPLETED",""),
IIf([Forms]![FormQuery]![Cancelled]=True,"Cancelled",""),
IIf([Forms]![FormQuery]![All]=True,[Permits]![Status],""))
据我了解,IN(...) 正在设置标准列表。标准取决于[Forms]![FormQuery]![Completed]=true 部分中所见的表单检查。如果选中该框,则传递一个字符串,否则为“”空值。所以当刚刚完成时,列表看起来像In (completed)
表格有效。当我选中“已完成”复选框时,查询将显示所有已完成。它与 cancelled 和 all 复选框的工作方式类似。一个问题是在最后一行找到的代码,尤其是[permits]![status] 部分仅显示了已填充的条目并且缺少空值。
如何搜索空值以及如何在所有查询中包含空值?
任何帮助将不胜感激。
【问题讨论】:
-
感谢您的参考。我觉得我所做的基本上是进行参数查询并将输入限制为在表单上找到的内容。我这样想对吗?另外,如果我输入代码:
-
如果我尝试: IIf([Forms]![FormQuery]![Open]=True,Is Null,"") 我得到:这个表达式输入错误,或者它太复杂以至于无法被评估。例如,一个数值表达式可能包含太多复杂的元素。尝试通过将表达式的一部分分配给变量来简化表达式。删除所有条件并重新开始时,我可以输入条件 Is Null 并获取所有空值
标签: sql forms vba null ms-access-2010