我的报告列出了几次会议,每次会议都有几条记录。我已设置弹出窗体,使用组合框选择单个特定会议日期,并使用该窗体过滤表单以进行打印。 (内置的过滤点击是笨重的,显然组合框不适用于报告。)这一切都在第一次正常工作。当我尝试选择不同的会议日期时问题出现了 - 尽管所有努力都要清除过滤器,报告仍会显示所选择的第一个会议,而不是关闭表单并重新打开。我已将以下代码放在打开选择表单的报告按钮中:
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
表单打开,我看到报表上的过滤器已关闭,我可以在表单上选择新日期,但旧日期仍用于再次过滤报表。 / p>
在选择表格中包含以下内容并不起作用:
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中使用组合框过滤表单的错误的旧报告,但是现在肯定已经解决了?我还缺少什么?
答案 0 :(得分:2)
你的过滤字符串很奇怪。它应该是:
Reports!rptRSVPAttendance.Filter = "MeetingDate = #" & Format(Forms!frmMeetingSelect.cboMeetingSelect.Value, "yyyy\/mm\/dd") & "#"
答案 1 :(得分:0)
这里有几件事似乎很奇怪:
在cmdMeetingSelect_Click中删除这些行,它们没有为您的报表执行任何操作,它控制窗体上的过滤器: Me.Filter =“” Me.FilterOn = False
您的过滤条件中存在语法错误,但除了这一点之外。我认为您希望在报告当前打开时进行过滤更改。这将无法工作,您必须关闭报告并重新打开它,并且您无法以这种方式更改过滤器。我建议你做的是在报告上设置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