【问题标题】:MS Access 2016 VBA Is Null in combined Query CriteriaMS Access 2016 VBA 在组合查询条件中为空
【发布时间】:2016-08-10 08:06:52
【问题描述】:

给定一个带有在访问中使用文本框的条件的查询。它工作正常。

Like IIf(IsNull([forms]![f_form]![txt_box]),"*",[forms]![f_form]![txt_box])

当单元格有值时,上述条件可以正常工作。但是,我搜索的表格中的很多单元格都是空的。

我最好的和合乎逻辑的镜头是:

   Like IIf(IsNull([forms]![f_form]![txt_box]),"*",[forms]![f_form]![txt_box])
OR Like IIf(IsNull([forms]![f_form]![txt_box]),Is Null,[forms]![f_form]![txt_box])

但是,这不起作用。

如果我只使用“Or Is Null”,那么即使我进行特定搜索,它也会返回单元格为空的所有记录。

有什么建议吗?

BR,埃米尔。

编辑:目前的解决方案是在所有空单元格中放入“-”,但是当用户将单元格留空(Null)时,该记录将永远不会出现在过滤器(查询)中。因此,我不喜欢这种解决方案。

【问题讨论】:

  • 嗨@Andre,这不是重复的,我已经研究过这个问题。问题是记录为空时,而不是文本框为空时。你有什么建议吗?
  • 顺便说一句,当我使用您刚刚发送的建议时,搜索将带有星号 * 。用户希望搜索 330 只能找到 330,而不是 3300、3301 等。如果我执行您所指的 * & textbox & *,就会发生这种情况。
  • 星号 * 是可以在查询中省略的详细信息。但是你不想要同样的东西吗? 1.如果搜索文本框为空,则返回所有记录。 2. 如果没有,是否进行搜索?然后你可以使用相同的概念。

标签: sql vba ms-access


【解决方案1】:

我的意思是这个标准:

[Forms]![f_form]![txt_box] OR ([Forms]![f_form]![txt_box] Is Null)

或者如果您也想支持通配符搜索(毕竟):

LIKE [Forms]![f_form]![txt_box] OR ([Forms]![f_form]![txt_box] Is Null)

【讨论】:

  • 据我所知,这在 IIF 内不起作用!
  • 你不需要IIf,也不需要Like。这将按搜索文本框(如果不为空)过滤或返回所有记录。
  • 是的,你是对的。那是有效的。非常感谢!
  • 不,我高兴得太快了。例如,当我搜索 33* 时,它只返回 #Name?在所有细胞中.. 为什么会这样?
  • 查看编辑...我以为您只需要精确搜索。
【解决方案2】:

我建议使用 NZ 而不是 IIF 和 IsNull 组合,

SearchField Like Nz([forms]![f_form]![txt_box],'*')

您是否认为 txt_Box 可以有零长度字符串而不是 Null 或者其中任何一个都可能存在?如果是这样,您可以尝试关注

SearchField like iif([forms]![f_form]![txt_box]='','',nz([forms]![f_form]![txt_box],'')

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多