【问题标题】:Like Nz not handling a null value就像 Nz 不处理空值
【发布时间】:2019-04-23 14:25:31
【问题描述】:

我有一个使用表单通过一些过滤选项控制的查询。其中一个过滤器是医疗代码搜索。有时这个字段有一个值,有时它是空的。我也希望能够搜索部分数据字符串。我正在尝试的代码是:

Expr9: ([tblQA].[Charges Entered]) Like Nz("*" & [Forms]![MainMenu]![btnManagersMenu].[Form]![txtChargeCode] & "*","*")

我希望发生的是,如果我在 txtChargeCode 中输入一些值,它将返回带有该字符串的任何记录。那部分有效。当 txtChargeCode 没有值时,问题就出现了。如果已输入费用的记录为空,则这些记录将从结果中过滤掉。我仍然看到有价值的记录。如果 txtChargeCode 留空,我希望记录中输入的费用的任何空值出现在结果中。任何人都可以帮我解决这里发生的事情吗?我已经多次翻阅 Like 和 Nz 页面了。

【问题讨论】:

    标签: ms-access ms-access-2016


    【解决方案1】:

    您当前的条件永远不会为空,因为它将始终包含字符串“**”。

    相反,我们将使用 Nz 将 [Charges Entered] 中的空值转换为空字符串 ("")。现在 [Charges Entered] 中的所有项目都被认为是条件中的字符串,我们可以将它们与 LIKE 运算符进行比较。

    当txtChargeCode为空时,下面的表达式将返回所有记录(包括空值)。

    Nz([tblQA].[Charges Entered], "") Like "*" & [Forms]![MainMenu]![btnManagersMenu].[Form]![txtChargeCode] & "*"
    

    您可以对 [Charges Entered] 进行排序,以便在结果顶部显示空值,以便在 txtChargeCode 为空时更容易发现空值。

    【讨论】:

    • 谢谢!既然我这样看,这完全有道理。
    猜你喜欢
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    相关资源
    最近更新 更多