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

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

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

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

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

【问题讨论】:

    标签: ms-access vba ms-access-2013


    【解决方案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 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多