MSACCESS返回NULL值,其中textbox =“ blank”

时间:2019-07-15 14:32:40

标签: sql ms-access ms-access-2016

我有一个搜索查询,该查询从文本框中返回值。我想添加功能以返回注释为空或为空的所有行。

我尝试编辑SQL以在文本框中接受“空白”,并返回注释为null的所有行。我只是将OR添加到代码的原始部分。

(((IIf(Nz([Forms]![Home]![CHOOSE_COMMENTS],"")="","",[WCL_DATABASE].[COMMENTS] Like [Forms]![Home]![CHOOSE_COMMENTS]))<>False) 

((IIf(Nz([Forms]![Home]![CHOOSE_COMMENTS],"")="Blank","",[WCL_DATABASE].[COMMENTS] Like ""))<>False) )`

搜索“空白”时,没有任何结果。

2 个答案:

答案 0 :(得分:1)

Null和一个空字符串("")是两个不同的值。

我猜你会想要使用这样的东西:

select * from YourTable where 
([Forms]![Home]![CHOOSE_COMMENTS] = "Blank" and [WCL_DATABASE].[COMMENTS] is null) or
([Forms]![Home]![CHOOSE_COMMENTS] is null) or
([WCL_DATABASE].[COMMENTS] like [Forms]![Home]![CHOOSE_COMMENTS])

这意味着:

  • 如果用户键入“空白”,那么将返回没有注释的记录。
  • 如果用户将注释字段留空,则将返回所有记录(没有过滤器)。
  • 否则,注释将与用户输入的通配符匹配。

答案 1 :(得分:0)

考虑在NZ公式的两边使用LIKE来匹配诸如 MISSING 之类的填充项。这将处理NULL个案例。要处理空(仅零长度或仅包含空格的字符串),请在等式的一侧使用NZ,因为没有值的表单控件都将呈现为NULL。两种方法都可以避免IIF调用。

以下应涵盖NULL个案例,非缺失案例和空字符串案例。

WHERE NZ([WCL_DATABASE].[COMMENTS], 'MISSING') 
          LIKE '*' & NZ([Forms]![Home]![CHOOSE_COMMENTS], 'MISSING') & '*'
   OR TRIM([WCL_DATABASE].[COMMENTS]) = NZ([Forms]![Home]![CHOOSE_COMMENTS], '')