0

我有一份报告列出了几次会议,每次会议都有几条记录。我已经设置了一个弹出表单来选择一个带有组合框的特定会议日期,并使用它来过滤表单以进行打印。(内置过滤点击很笨拙,显然组合框不适用于报告。)这一切都在第一次通过时正常工作。当我尝试选择不同的会议日期时出现问题 - 尽管所有努力清除过滤器,但报告仍显示选择的第一个会议,而不是关闭表单并重新打开。我在打开选择表单的报告按钮中放置了以下代码:

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

表单打开,我看到报表上的过滤器已关闭,我可以在表单上选择一个新日期,但旧日期仍用​​于再次过滤报表。

在选择表中包含以下内容无济于事:

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

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

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 中使用组合框过滤表单的错误的旧报告,但现在肯定已经解决了吗?我还缺少什么?

4

2 回答 2

2

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

Reports!rptRSVPAttendance.Filter = "MeetingDate = #" & Format(Forms!frmMeetingSelect.cboMeetingSelect.Value, "yyyy\/mm\/dd") & "#"
于 2017-03-08T07:59:28.510 回答
0

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

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

  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
于 2017-03-07T22:22:43.293 回答