2017-03-07 63 views
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中使用組合框過濾窗體的舊報告,但肯定現在已經解決了這個問題。我還有什麼遺漏?

回答

2

你的過濾字符串是怪異。它應該是:

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

完美運行,並允許過濾器更改而不關閉並重新打開報告。謝謝! – bcarothers

0

有幾件事情,在這裏似乎奇怪:

  1. 擺脫cmdMeetingSelect_Click這些線路,他們沒做你的報告,控制表單上的過濾器什麼: Me.Filter = 「」 Me.FilterOn = False

  2. 您的過濾條件中有一個語法錯誤,但除此之外。我認爲您希望在報告當前打開時進行過濾。這將不起作用,您必須關閉報告並重新打開報告,並且您無法以此方式更改過濾器。我建議你做的是在報告上設置where條件而不是嘗試應用過濾器。在完成此操作之前,請在設計模式下打開該報告,並刪除任何現有的過濾器,並關閉過濾器。然後替換你有cmdFilterMeeting_Click本:

常量RptName的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