查询组合框过滤器在 Null 时不起作用(仅在表单中)

Posted

技术标签:

【中文标题】查询组合框过滤器在 Null 时不起作用(仅在表单中)【英文标题】:Combobox filter on a query not working while Null (in the form only) 【发布时间】:2016-07-11 12:34:56 【问题描述】:

我目前正在开发一个有关 MS-Access 2010 的项目,并且我正在为一个问题苦苦挣扎好几个小时。我想对 SELECT/PIVOT 语句应用过滤器。该查询的结果显示在 ListBox 中。

问题是当 Combobox 设置为 Null 时不显示任何结果。但是,当我在该组合框中选择特定值时,它会完美运行。

Cbbox 过滤器被声明为参数 我的查询 WHERE 子句如下所示:
WHERE (Jobs.fk_group=[Formulaires]![frm_MAIN]![lst_filterGroup] AND (fk_otherCritera='XXX')) 
   OR ((([Formulaires]![frm_MAIN]![lst_filterGroup]) Is Null)   AND (fk_otherCritera='XXX'))
当我手动输入参数值时,查询有效(=当我输入空字符串时,它会显示所有记录 = 我想要的) Idk 如果它很重要,还有我使用的列表视图动态交换它的记录源(=它运行 2 个不同的查询),这取决于另一个 Cbbox 我在 MyListview.Requery 调用之前将参数值检查到了我的 VBA 代码中,并且 IsNull(myCbboxReference) 返回 True 并且我的其他条件也正常。

我不知道我做错了什么,我需要帮助:-(

最好的问候,LR

【问题讨论】:

【参考方案1】:

我建议在组合框中使用特殊值来显示主表中的所有记录,不要依赖与 Null 值进行比较。您的查询可能不起作用,因为空组合框返回 "" ,而不是 Null

还要小心基于对控件/参数的引用的查询。 Access 有一个错误:如果您对表单中的数据应用过滤器,基于此类引用的查询,它会在重新查询期间停止从控件/参数中读取新值。它至少出现在数据表模式下的子表单中。此错误的解决方法 - 使用函数而不是引用。

【讨论】:

谢谢,当我把 Nz(CbboxRef)="" 而不是 Is Null :) 时它确实有效,你所说的“使用函数而不是引用”是什么意思?您的意思是将getter函数放入模块中以访问控件?我只是想确保了解

以上是关于查询组合框过滤器在 Null 时不起作用(仅在表单中)的主要内容,如果未能解决你的问题,请参考以下文章

如何过滤表单中具有多个组合框的 Access 子表单?

从组合框中过滤查询(为 Null 且不为空)

组合框更改后子表单不重新查询

在 ms-Access 中使用组合框创建搜索表单

Access 2013 - 由表单上的组合框过滤的嵌入式查询

为什么Access VBA下拉方法不起作用?