MS Access:带有复选框的表单过滤器以应用预定义的标准

Posted

技术标签:

【中文标题】MS Access:带有复选框的表单过滤器以应用预定义的标准【英文标题】:MS Access: form filter with Check Box to apply predefined criteria 【发布时间】:2021-06-21 15:24:30 【问题描述】:

我是 MS Access 的新手。 我正在尝试构建一个表单,我可以通过单击一个复选框来应用预定义的标准来过滤它。 在我的特殊情况下,tblIssues 包含 ClosedOnDate 字段。

我希望我的表单能够显示 ClosedOnDate 为 Null 的记录(例如,当表单 CheckBox 状态为 False 时)以及当表单 CheckBox 状态为 True 时的所有记录。

在表单中应用过滤器的机制对我来说相当清楚,但我不知道如何将表格中的非 CheckBox 字段与表单上的复选框联系起来。

我尝试在论坛中搜索提示,但找不到任何关于该主题的有意义的帖子。

非常感谢您的帮助。

帕维尔

【问题讨论】:

【参考方案1】:

对于形式为 RecordSource 的动态参数化查询,请考虑:

WHERE IIf(ClosedOnDate IS NULL, 0, 1) LIKE IIf(Forms!formname!checkboxname = 0, 0, "*"); 

或者,编写一个有条件地构建过滤条件并应用于表单过滤属性的 VBA 过程。

Dim strWhere As String
...
If Me.checkboxname = False Then strWhere = "ClosedOnDate IS NULL"
...
Me.Filter = strWhere
Me.FilterOn = True

有关代码构建过滤条件的更广泛示例,请查看http://allenbrowne.com/ser-62code.html

请务必将复选框 TripleState 属性设置为否。

【讨论】:

谢谢 June7,在第二种情况下,我在哪里应用 VBA 代码?是 CheckBox 的“On Click”事件还是 Form 的“On Filter”事件? 视情况而定。您想使用来自多个控件的输入来构建标准吗?如果没有,那么可以只使用点击事件,否则,一个按钮。我看不出 OnFilter 事件对设置过滤器有何用处。您是否查看了链接的文章?

以上是关于MS Access:带有复选框的表单过滤器以应用预定义的标准的主要内容,如果未能解决你的问题,请参考以下文章

使用宏过滤带有组合框的表单 - MS Access

带有所有选项复选框的多对多 MS 访问表单

如何在连续子表单中使用未绑定复选框 - MS Access 2013

MS Access 2013 - 根据文本框中的值过滤列表框中的值

VBA代码在MS Access中不区分大小写的过滤器

MS Access:数据表属性(作为子表单)- 表单未打开,错误:2489?