2017-03-07 9 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을 문자열 = "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