/ / Usuwanie problemów Filtr raportów dostępu - access-vba, ms-access-2013, ms-access-raporty

Problem z kasowaniem filtra raportu dostępu - access-vba, ms-access-2013, ms-access-reports

Mam raport z listą kilku spotkańkilka rekordów na spotkanie. Skonfigurowałem wyskakujący formularz, aby wybrać konkretną datę spotkania za pomocą pola kombi i użyć go do filtrowania formularza do celów drukowania. (Wbudowane filtrowanie po kliknięciu jest nieporęczne i najwyraźniej pola kombi nie pracuj nad raportami.) Wszystko działa dobrze za pierwszym razem. Problem pojawia się, gdy próbuję wybrać inną datę spotkania - raport nadal wyświetla pierwsze wybrane spotkanie pomimo wszystkich wysiłków, aby wyczyścić filtr, oprócz zamknięcia formularza i ponownego otwarcia. W przycisku raportu, który otwiera formularz wyboru, umieściłem następujący kod:

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

Formularz zostanie otwarty, widzę, że filtr wyłącza się w raporcie i jestem w stanie wybrać nową datę w formularzu, ale stara data jest nadal używana do ponownego filtrowania raportu.

Umieszczenie następujących elementów w formularzu wyboru nie pomaga:

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

Jest to kod w formularzu wyboru, wysyłający wybór filtra z powrotem do raportu. Nie jestem pewien, czy coś w tym sprawia, że ​​działa tylko raz:

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

Kliknięcie Advanced -> Clear All Filters w raporcie jest również nieskuteczne.

Widziałem kilka starych raportów o błędach dotyczących filtrowania formularzy za pomocą pól kombi w programie Access 2010, ale na pewno to już zostało rozwiązane? Czego jeszcze mi brakuje?

Odpowiedzi:

2 dla odpowiedzi № 1

Twój ciąg filtrów jest dziwny. Powinien brzmieć:

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

0 dla odpowiedzi nr 2

jest tu kilka rzeczy, które wydają się dziwne:

  1. pozbyć się tych wierszy w cmdMeetingSelect_Click, nic nie robią dla twojego raportu, który kontroluje filtry w formularzu: Me.Filter = "" Me.FilterOn = False

  2. Wystąpił błąd składniowy w kryteriach filtrowania,ale to nie o to chodzi. Myślę, że oczekujesz, że filtr zmieni się po otwarciu raportu. to nie zadziała, musisz zamknąć raport i otworzyć go ponownie, i nie możesz w ten sposób zmieniać filtrów. sugeruję zamiast tego ustawić warunek where w raporcie zamiast próbować zastosować filtr. Jednak zanim to zrobisz, otwórz ten raport w trybie projektowania i usuń istniejący filtr, a także wyłącz filtry. Następnie zastąp to, co masz w 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