MS Access 2016 VBA在组合查询标准中为空

时间:2016-08-10 08:06:53

标签: sql vba access-vba access

给定一个查询,其条件是在访问中使用文本框。它工作正常。

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

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

我最好的和逻辑镜头是:

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

然而,这不起作用。

如果我只是使用"或者是Null"然后,即使我进行特定搜索,它也会返回单元格为空的所有记录。

有什么建议吗?

BR,Emil。

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

2 个答案:

答案 0 :(得分:1)

我的意思是这个标准:

            bool DoMerge =false//this is global and static
            if (Session["currentDataSet"] == null)
            {
                Session["currentDataSet"] = SqlHelper.ExecuteDataset(sCon, "Ps_Quiz_GetQsns", Int32.Parse(ddlQuestionTypeName.SelectedValue), Int32.Parse(ddlQuestionSubTypeName.SelectedValue)); ;
            }
            QuestionsCollection = (DataSet)(Session["currentDataSet"]);
            if (DoMerge) QuestionsCollection.Merge(SqlHelper.ExecuteDataset(sCon, "Ps_Quiz_GetQsns",quiz);
            DoMerge = true;
            Session["currentDataSet"] = QuestionsCollection;
            GridViewAllQuestions.DataSource = QuestionsCollection;
            GridViewAllQuestions.DataBind()

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

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

答案 1 :(得分:1)

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

SearchField与Nz一样([表格]![f_form]![txt_box],' *')

你认为txt_Box可以有零长度字符串而不是Null,或者可能有一个可以存在吗?如果是这样,你可以试试

SearchField就像iif([forms]![f_form]![txt_box] ='',' ',nz([forms]![f_form]! [txt_box]' &#39)