Sortowanie w kwerendzie wybierającej

Jak posortować dane w kwerendzie? Załóżmy, że mamy tabelę:

kliknij screen, aby powiększyć

Przenosimy wszystkie pola tabeli do kwerendy wybierającej:

kliknij screen, aby powiększyć

Dodatkowo można dołożyć pole obliczeniowe np.likwidujące wartość null w polu DataP. Nazwałam to pole DataPelna i wstawiłam tam funkcję DataPelna: nz(DataP;Date())

kliknij screen, aby powiększyć

Funkcja ta działa w ten sposób, że jeżeli w kolumnie DataP jest jakaś wartość, wstawia ją. Jeżeli natomiast pole jest puste – wstawia datę bieżącą. Teraz pora na sortowanie. Jeżeli chcemy posortować kwerendę wg kilku różnych kolumn – istotna jest ich kolejność. Im bardziej dana kolumna jest na lewo – tym wyższy poziom sortowania, a więc jest sortowana w pierwszej kolejności. 
W przykładzie ustawiłam sortowanie rosnąco dla kolumny Dzial, a w drugiej kolejności dla kolumny DataPelna. 

kliknij screen, aby powiększyć

Rezultat wygląda tak:

kliknij screen, aby powiększyć

Chcą zmienić kolejność sortowania czyli najpierw wg DataPelna, a następnie wg Dzialu – wystarczy przenieść kolumny w siatce kwerendy.

kliknij screen, aby powiększyć

Jeżeli posortowana kwerenda będzie ustawiona jako źródło danych dla formularza czy raportu – poszczególne rekordy będą wyświetlać się zgodnie z kolejnością sortowania kwerendy.


 

Kurs Access - kwerendy

Filtrowanie raportu

Konkretny przykład do rozwiązania: jak wygenerować raport w Accessie z danymi wyfiltrowanymi na podstawie danych zawartych w polach formularza niezwiązanego?

Załóżmy, że mamy tabelę z katalogiem książek:

raport oparty na podstawie tej tabeli:

oraz prosty formularz  niezwiązany (o nazwie FormularzSzukaj) z formantami JakiDzial i JakaCena:

Po wpisaniu w te pola np.sensacja i 15 – chcemy otrzymać raport pokazujący te książki z działu sensacja, których cena wynosi co najmniej 15zł.  Pod zdarzenie przy kliknięciu przycisku Otwórz raport wprowadzamy makro:

                                          kliknij rysunek, aby powiększyć

Warunek WHERE dla makra to w tym przypadku:

[Dzial]=[Formularze]![FormularzSzukaj]![JakiDzial] And [Cena]>=[Formularze]![FormularzSzukaj]![JakaCena]

Chcąc otworzyć nie raport tylko podgląd wydruku raportu – wystarczy zmienić atrybut Widok na Podgląd wydruku.


                                          kliknij rysunek, aby powiększyć

Można też wybrać tu Wydruk, aby nie otwierając raportu, od razu wysłać go na drukarkę.

Zamiast makra pod przyciskiem generowania raportu można też użyć procedury VBA.

Procedura otwarcia raportu:

Private Sub Polecenie5_Click()
Dim JakiDzial As String
Dim JakaCena As Currency
JakiDzial = Me.JakiDzial
JakaCena = Me.JakaCena
DoCmd.OpenReport “Raportksiazek”, acViewReport, , “dzial='” & JakiDzial & “‘ and cena>=” & JakaCena
End Sub

Procedura otwarcia podglądu wydruku raportu:

Private Sub Polecenie5_Click()
Dim JakiDzial As String
Dim JakaCena As Currency
JakiDzial = Me.JakiDzial
JakaCena = Me.JakaCena
DoCmd.OpenReport “Raportksiazek”, acViewPreview, , “dzial='” & JakiDzial & “‘ and cena>=” & JakaCena
End Sub

Procedura bezpośredniego wydruku raportu:

Private Sub Polecenie5_Click()
Dim JakiDzial As String
Dim JakaCena As Currency
JakiDzial = Me.JakiDzial
JakaCena = Me.JakaCena
DoCmd.OpenReport “Raportksiazek”, acViewNormal, , “dzial='” & JakiDzial & “‘ and cena>=” & JakaCena
End Sub

 


Kurs Access - formularze i raporty