Sql MS Access 2016 VBA在组合查询条件中为空

Sql MS Access 2016 VBA在组合查询条件中为空,sql,vba,ms-access,Sql,Vba,Ms Access,给定的查询条件使用access中的文本框。它很好用 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

给定的查询条件使用access中的文本框。它很好用

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”,那么即使在我进行特定搜索时,它也会返回单元格为Null的所有记录

有什么建议吗

比尔,埃米尔


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

我的意思是以下标准:

[Forms]![f_form]![txt_box] OR ([Forms]![f_form]![txt_box] Is Null)
或者,如果您也想支持通配符搜索(毕竟):


我建议用NZ代替IIF和IsNull组合

搜索字段,如新西兰([forms]![f_form]![txt_box],“*”)

您认为txt_框中的字符串长度可以为零而不是Null,或者其中任何一个都可能存在吗?如果是这样的话,你可以试试下面的方法


像iif([forms]![f_form]![txt_box]='','',新西兰([forms]![f_form]![txt_box],'')这样的搜索字段

Hi@Andre的可能副本,这不是一个复杂的问题,我已经研究过这个问题。问题是记录为空时,而不是文本框为空时。你有什么建议吗?顺便说一句,当我使用你刚刚发送的建议时,搜索将与星星一起*。用户希望搜索330只找到330,而不是3300、3301等。这将如果我使用你所指的*文本框和*我会遇到这种情况。星号*是一个可以在你的查询中忽略的细节。但是你不想要同样的东西吗?1.如果搜索文本框为空,返回所有记录。2.如果不是,则进行搜索?然后你可以使用相同的概念。就我所知,这在IIF中不起作用!你不需要
IIF
和no
类似于
。这会通过搜索文本框过滤(如果不是空的话)或返回所有记录。是的,你是对的。这很有效。非常感谢!不,我太高兴了。例如,当我搜索33*时,它只会在所有单元格中返回#Name?。为什么?请参见编辑…我以为你只需要精确的搜索。
LIKE [Forms]![f_form]![txt_box] OR ([Forms]![f_form]![txt_box] Is Null)