无法清除访问报告过滤器

Trouble clearing Access report filter

我有一份报告列出了几个会议,每个会议都有几条记录。我已经将 pop-up 表单设置为 select 带有组合框的单个特定会议日期,并使用它来过滤表单以进行打印。 (built-in 过滤 click-through 很笨拙,显然组合框对报告不起作用。)这在第一次通过时一切正常。当我尝试 select 一个不同的会议日期时,问题就来了——报告仍然显示第一个会议 selected 尽管尽了一切努力来清除过滤器,而不是关闭表单和 re-opening。我在打开 selection 表单的报告按钮中放置了以下代码:

Private Sub cmdMeetingSelect_Click()
'Clear any pre-existing filter
    Me.Filter = ""
    Me.FilterOn = False
'Open form to filter the report
    DoCmd.OpenForm "frmMeetingSelect"
End Sub

表格打开,我看到报表上的过滤器已关闭,我可以 select 在表格上添加新日期,但旧日期仍用​​于过滤再次报告。

在 selection 表格中包含以下内容无济于事:

Private Sub Form_Open(Cancel As Integer)
    Me.cboMeetingSelect = ""
End Sub 

这是 selection 表单中的代码,将过滤器选择发送回报告。不确定它是否只工作一次:

Private Sub cmdFilterMeeting_Click()
'Run a filter on the RSVPAttendance report
    Reports!rptRSVPAttendance.Filter = "MeetingDate = Forms!frmMeetingSelect.cboMeetingSelect"
    Reports!rptRSVPAttendance.FilterOn = True
'Close selection form
    DoCmd.Close
End Sub

在报告中点击Advanced -> Clear All Filters也是无效的。

我已经看到一些关于在 Access 2010 中使用组合框过滤表单的错误的旧报告,但现在肯定已经解决了吗?我还缺少什么?

这里有几件事看起来很奇怪:

  1. 删除 cmdMeetingSelect_Click 中的这些行,它们不会为您的报告做任何事情,它们控制表单上的过滤器: Me.Filter = "" Me.Filter开 = 假

  2. 您的筛选条件存在语法错误,但这不是重点。我认为您希望在报告当前打开时进行过滤以更改。那将不起作用,您必须关闭报告并重新打开它,并且您不能以这种方式更改过滤器。我建议您改为在报告中设置 where 条件,而不是尝试应用过滤器。不过,在执行此操作之前,请在设计模式下打开该报告,并删除任何现有过滤器,并关闭过滤器。然后将 cmdFilterMeeting_Click 中的内容替换为:

Const RptName As String = "rptRSVPAttendance"

 'close report if already open
 If SysCmd(acSysCmdGetObjectState, AcObjectType.acReport, RptName) = 1 Then   'report is open
  DoCmd.Close acReport, RptName
 End If

 'open report with where criteria, no filtering needed
 DoCmd.OpenReport RptName, acViewPreview, , ("[MeetingDate] = #" & Me.cboMeetingSelect.Value & "#")

'close form
 DoCmd.Close acForm, Me.Name

您的过滤器字符串很奇怪。它应该是:

Reports!rptRSVPAttendance.Filter = "MeetingDate = #" & Format(Forms!frmMeetingSelect.cboMeetingSelect.Value, "yyyy\/mm\/dd") & "#"