/ / filtrowanie raportu z filtrem formularza arkusza danych - ms-access, access-vba, ms-access-2013

filtrowanie raportu z filtrem formularza arkusza danych - ms-access, access-vba, ms-access-2013

Problem: Formularz arkusza danych utworzyłem za pomocą zapytania. Używam tego samego zapytania, aby zrobić raport. Kiedy filtruję formularz arkusza danych, a następnie otwieram raport, filtr formularza nie wpływa na mój raport.

Co należy osiągnąć: Chciałbym zobaczyć te same dane w moim raporcie i mojej odfiltrowanej formie.

Pytanie: Czy jest jakiś sposób na zastosowanie filtru formularza arkusza danych do mojego raportu?

Ważny: Nie mogę używać niezwiązanych pól w moim formularzu do filtrowaniapytanie. To musi być „Excelowy” pomysł filtrowania. Mam na myśli, że użytkownik powinien mieć możliwość kliknięcia małego trójkąta w każdej kolumnie formularza arkusza danych, włączenia niektórych danych z listy, a następnie otwarcia raportu. Raport powinien „zapamiętać” ustawienia filtrów formularza.

Odpowiedzi:

1 dla odpowiedzi № 1

Raport oparty jest na zapytaniu, więc nie możeszotwórz raport z okna bazy danych / okienka nawigacji i łatwo zmień jego dane źródłowe zgodnie z tym, co jest wyświetlane w otwartym formularzu. (Jest to możliwe, ale wymaga pewnego kodowania).

Możesz umieścić formularz jako podformularz w nowym pustym formularzu, aby następnie dodać przycisk, aby wyświetlić podgląd raportu.

Przycisk wyświetla podgląd raportu i zawiera Filter. Ten filtr można skopiować z aktualnie używanego przez podformularz:

Private Sub cmdPreview_Click()
"Debug.Print Me.Controls("frmStaffFilter").Form.Filter
DoCmd.OpenReport "rptStaffFilter", acViewReport, , Me.Controls("sbfStaffFilter").Form.Filter
End Sub

(Używa to argumentu Where, a nie nazwanego filtra, który jest argumentem przed tym.)


Na tej podstawie możesz osiągnąć to, co ja pierwszywzmiankowany. Możesz użyć zdarzenia Open raportu, aby najpierw sprawdzić, czy formularz (i jego podformularz) jest aktualnie otwarty, a następnie przeczytać i zastosować filtr podformularza, dostosowując mój kod powyżej.