使用数据表表单过滤器过滤报告

Posted

技术标签:

【中文标题】使用数据表表单过滤器过滤报告【英文标题】:filtering report with datasheet form filter 【发布时间】:2016-05-30 15:07:56 【问题描述】:

问题:我使用查询创建了数据表表单。我使用相同的查询来制作报告。当我过滤数据表表单然后打开我的报表时,表单的过滤器不会影响我的报表。

要实现的目标:我希望在我的报告和过滤后的表单中看到相同的数据。

问题:是否有一些技巧可以将数据表表单过滤器应用于我的报告?

重要提示:我不能在我的表单中使用未绑定的字段来过滤查询。它必须是“类似 Excel”的过滤理念。我的意思是,用户应该能够单击数据表表单每一列中的小三角形,从列表中选择一些数据,然后打开报告。报告应该“记住”表单的过滤器设置。

【问题讨论】:

【参考方案1】:

报表基于查询,因此您无法从数据库窗口/导航窗格打开报表,也无法根据打开表单上显示的内容轻松更改其源数据。 (有可能,但需要一些编码。)

您可以将表单作为子表单放置在新的空白表单上,这样您就可以添加一个按钮来预览报告。

该按钮将预览报告并包含Filter。此过滤器可以从子表单当前使用的过滤器中复制:

Private Sub cmdPreview_Click()
    'Debug.Print Me.Controls("frmStaffFilter").Form.Filter
    DoCmd.OpenReport "rptStaffFilter", acViewReport, , Me.Controls("sbfStaffFilter").Form.Filter
End Sub

(这是使用 Where 参数,而不是命名过滤器,这是在此之前的参数。)


基于此,您可以实现我首先提到的。您将使用报表的 Open 事件首先检查表单(及其子表单)当前是否打开;然后通过修改我上面的代码来阅读并应用子表单的过滤器。

【讨论】:

好的,花了一段时间,但我终于明白了。我已经用 Forms!sbfStaffFilter.Form.Filter 替换了您的 Where 参数: Me.Controls("sbfStaffFilter").Form.Filter ,它现在可以正常工作了。非常感谢您的帮助,安迪 G :)

以上是关于使用数据表表单过滤器过滤报告的主要内容,如果未能解决你的问题,请参考以下文章

报告索引未正确过滤访问 2010

如何在 Inlineformset 中动态过滤 ModelChoice 的查询集?

Redux-Toolkit = 无法使用 useSelector 显示 API 响应数据

MS.Access - 在 DoCmd.OpenReport [where 条件] 中使用 2 个过滤条件从表单打印报表

MS Access:如何过滤非报告字段的报告?

MS Access 如何计算过滤报告上的唯一记录或值