MSACCESS 返回 NULL 值,其中文本框 = "blank"

MSACCESS returning NULL values where textbox = "blank"

我有一个搜索查询 returns 来自文本框的值。我想将功能添加到 return 所有 Comments 为 null 或空的行。

我尝试编辑 SQL 以接受文本框中的 "blank" 和 return 所有注释为空的行。我只是将 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) )`

当我搜索 "blank" 时,我没有收到任何结果。

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])

这意味着:

  • 如果用户键入 "Blank",则返回没有评论的记录。
  • 如果用户将评论字段留空,则返回所有记录(无过滤器)。
  • 否则评论是与用户条目匹配的通配符。

考虑在 LIKE 等式两边使用 NZ 来匹配 MISSING 等填充项。这将处理 NULL 个案例。要处理空字符串(zero-length 或仅限空白字符串),请在等式的一侧使用 NZ,因为没有值的表单控件呈现为 NULL。使用这两种方法,您都可以避免调用 IIF

以下应涵盖 NULL 个案例、non-missing 个案例和 empty-string 个案例。

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