Temat: Filtrowanie danych raportu?

Witam,
Mam prosty raport, dla którego źródłem danych jest tabela tblEvent, która zawiera pola Data (typu data krótka) i pole Role, dla którego źródłem wierszy jest tabela tblRole. Chciałbym mieć możliwość drukowania raportu ale tylko wybranych danych dla wybieranego osobnymi kontrolkami zakresu dat oraz roli. Nie wiem, jak zabrać się za to zagadnienie. Udało mi się zrobić formularz ciągły, dla którego specyfikuję filtr za pomocą dodatkowych kontrolek umieszczonych w nagłówku (kontrolki Rola oraz DataOd i DataDo), ale nie potrafię tego samego wykonać dla raportu. Prośba o pomoc...RW

Temat: Filtrowanie danych raportu?

Mógłbym oprzeć raport nie na tabeli a na kwerendzie, tylko jak utworzyć kwerendę na podstawie niezwiązanych kontrolek umożliwiających filtrowanie? RW

Temat: Filtrowanie danych raportu?

Chyba już sobie poradziłem ;-)...r
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Filtrowanie danych raportu?

Wprawdzie już po czasie, ale na wszelki wypadek, może przydać się na przyszłość: przy otwieraniu raportu wystarczy wstawić warunek where.... - raport otworzy się wyfiltrowany.

Temat: Filtrowanie danych raportu?

Witam,
Zrobiłem to tak:
- utworzyłem formularz, na którym umieściłem kontrolki (niezwiązane) przeznaczone do filtrowania raportu. Po wybraniu odpowiednich danych wejściowych klikam przycisk otwórz Raport,
- źródłem danych otwieranego raportu jest kwerenda, która korzysta z kontrolek filtrujących umieszczonych na wcześniejszym formularzu.

W ten sposób otwiera mi się raport przefiltrowany danymi wejściowymi z kontrolek na formularzu. Być może można prościej, ale nie bardzo wiem jak? Brakuje mi tylko jednej opcji. Otwierany raport otwieram w widoku podglądu, po czym klikam prawym przyciskiem myszy i z menu kontekstowego wybieram drukuj. Wolałbym mieć przycisk Drukuj na wcześniejszym formularzu lub raporcie. RW
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Filtrowanie danych raportu?

No więc można to zrobić mniej więcej w ten sposób:

Filtrowanie raportu

Temat: Filtrowanie danych raportu?

Fajnie zrobione. Mój sposób korzysta z kwerendy opartej na kontrolkach z formularza...R
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Filtrowanie danych raportu?

Różnymi drogami można osiągnąć ten sam cel. Moim zdaniem jednak otwieranie raportu z filtrem jest bezpieczniejsze. Umożliwia też sprawdzenie, czy konieczne pola zostały wypełnione.

Temat: Filtrowanie danych raportu?

A jeśli kontrolki na formularzu niezwiązanym zawierają zakres dat i pole checkbox to czy takie filtrowanie będzie możliwe? Jak będzie wyglądał warunek dla VBA? R
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Filtrowanie danych raportu?

Odwołując się do przykładu pokazanego na blogu - do tabeli dołożyłam pole DataP (jako data) i Bestseller (jako Boolean) , a w formularzu szukaj wstawiłam formanty Jdata i JCheck.
Przykładowy kod otwarcia raportu z takimi danymi filtra to:
Private Sub Polecenie5_Click()
Dim JakaData As Date
Dim JakiCheck As Boolean
JakaData = Me.Jdata
JakiCheck = Me.JCheck
DoCmd.OpenReport "Raportksiazek", acViewReport, , "Datap>=#" & JakaData & "# and bestseller=" & JakiCheck
End Sub

Temat: Filtrowanie danych raportu?

Dziękuję za przykład. Nie znam składni DoCmd.OpenReport, dlatego zapytam po co są #? A gdybym chciał ograniczyć do zakresów dat (od, do), checkboxa i pola kombi (wyboru), można byłoby prosić o przykład? Pozdrawiam...RW

Temat: Filtrowanie danych raportu?

Przy otwieraniu raportu z filtrem wyskakuje błąd składniowy daty:

Błąd składniowy w dacie w wyrażeniu kwerendy.
'(Data>=#28.04.2020#'

Na formularzu mam pola txtStartDate i txtEndDate a kod wywołania raportu wygląda tak:

Private Sub Raport_Click()
Dim startDate, endDate As Date

startDate = Me.txtStartDate
endDate = Me.txtEndDate

DoCmd.OpenReport "rptDemo", acViewPreview, , "Data>=#" & startDate & "#"

End Sub

Pole Data to pole tabeli (typu Data/Godzina) która jest źródłem danych raportu. Widocznie problem dotyczy zapisu daty w filtrze...RTen post został edytowany przez Autora dnia 28.04.20 o godzinie 10:13

Temat: Filtrowanie danych raportu?

Należało zmienić formatowanie daty, jak niżej:

Private Sub Raport_Click()

Const conJetDate = "\#mm\/dd\/yyyy\#"
Dim startDate, endDate As Date

startDate = Me.txtStartDate
endDate = Me.txtEndDate

DoCmd.OpenReport "rptDemo", acViewPreview, , "Data>=" & Format(Me.txtStartDate, conJetDate)

End Sub

Pozostaje filtrowanie według pola kombi. Jak najprościej? R
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Filtrowanie danych raportu?

Ja ustawiłam formant formularza jako data krótka, więc nie musiałam już tego robić kodem.
A jeśli chodzi o pole kombi - to identycznie. Pole kombi ma swoją wartość i do niej wystarczy się odwołać tak jak odwołujemy się do pola tekstowego.

Temat: Filtrowanie danych raportu?

Ja również ustawiłem format kontrolki, jako data krótka...ale to nic nie zmieniło. Błąd występował. Być może jest to związane ze sposobem prezentacji daty w systemie operacyjnym? R
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Filtrowanie danych raportu?

Bardzo możliwe. Ja w wielu swoich projektach, nie mając pewności odnośnie ustawień komputera, na którym zostanie zainstalowana aplikacja, bardzo często w kodzie konwertuję datę na liczbę i dopiero wtedy wykorzystuję jako parametr.

Temat: Filtrowanie danych raportu?

Koniec końców zrobiłem, jak proponowano. Otwieram Raport, dla którego źródłem danych jest Tabela i filtruję za pomocą formantów z dedykowanego formularza. Pozostają dwie niedogodności:

- gdy filtr nie zwraca żadnych rekordów to na Raport zawiera jeden niewypełniony niczym wpis a powinien albo być pusty albo zwracać komunikat o braku rekordów do wyświetlenia,

- eleganckim rozwiązaniem byłoby drukowanie raportu z podglądu raportu za pomocą jakiegoś przycisku a nie po kliknięciu prawym przyciskiem myszy i wyborze, spośród wielu opcji (w tym podglądu projektu), wydruku raportu.

RW
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Filtrowanie danych raportu?

Ja najczęściej robię to w ten sposób, że na raporcie wstawiam ukryte pole o wartości =Policz(*)
Przy braku rekordów będzie to zero, więc można kodem odwołać się i wyświetlić jakieś pole z komunikatem.
A wydruk? Najprościej przycisk z podpiętym kodem i wykorzystaniem Docmd.PrintOut ...

Temat: Filtrowanie danych raportu?

Ale ja raport wywołuje z formularza, na którym mam kontrolki filtrujące i chciałbym wiedzieć już przed wywołaniem raportu, że nie ma żadnych danych do wyświetlenia. Jeśli umieszczę pole Policz na raporcie to i tak muszę go wywołać i pokazać by dowiedzieć się, że nie ma żadnych danych do wyświetlenia czyli nie rozwiązuje to w zasadzie problemu? RW
Marzanna Szulta

Marzanna Szulta właściciel, Usługi
Informatyczne
SZULTASET

Temat: Filtrowanie danych raportu?

W takim razie w formularzu, na początku procedury otwierającej raport trzeba sprawdzić ile rekordów będzie miał raport. Najlepsza będzie tu funkcja DCount. Jak argumenty - kwerenda będąca źródłem danych raportu, a trzeci argument - taki sam jak wynikający z kontrolek do otwarcia raportu.



Wyślij zaproszenie do