Kryteria wyszukiwania

W zależności od typu danych w danym polu kwerendy, kryteria wyszukiwania mogą być zdefiniowane w następujący sposób:

  • Tekst
    symbole zastępujące znak/ciągi znaków:
* dowolny znak lub ciąg znaków, również o zerowej długości
?
pojedynczy znak
#
cyfra
[A-Z]
pojedynczy znak z listy liter alfabetu
[!A-Z]
pojedynczy znak spoza listy liter alfabetu
[0-9]
pojedynczy znak z listy cyfr
 [!0-9] pojedynczy znak spoza listy cyfr
[ĄĘĆŚ,;]
pojedynczy znak z samodzielnie zdefiniowanej listy znaków
[!ĄĘĆŚ,;] pojedynczy znak spoza samodzielnie zdefiniowanej listy

Jak to wygląda w praktyce? Np. tak:

Like “*a*” – rekordy zawierające literę a, wielkość liter nie ma znaczenia
Like “*#*” – rekordy zawierające cyfrę
Like “?1*2” – rekordy zawierające cyfrę na drugim miejscu i kończące się
                           cyfrą2
Like “*[ąęó]*” – rekordy zawierające jedną z liter wpisanych w nawiasie

  • Data
    kryteria wyboru daty muszą być umieszczone w hasztagach.
    Np. chcąc wyfiltrować konkretną datę wpisujemy
    #2020-11-29#.
    Dla zakresu dat będzie to wyglądało tak:
    >#2020-11-09# And <#2020-11-17#
    znaki nierówności mogą być też nieostre czyli np.
    >=#2020-11-09# And <=#2020-11-17#
    Zakres dat można też ująć w zapisie:
    between #2020-11-09# And <#2020-11-17# 
    – w tym przypadku daty krańcowe też są brane do wyszukiwania. 
    W wyszukiwaniu dat bardzo ważnym aspektem jest też format daty. Jeżeli daty w kolumnie są zapisane (niezależnie od tego, jaki jest format wyświetlania daty) również z datą i godziną, to kryterium wyszukiwania ograniczone do zapisu #2020-11-20# wyznaczy rekordy tylko z godziną 00:00 tego dnia, każda inna godzina nie spełnia kryterium. W takim przypadku konieczny jest zapis:
    >=#2020-11-20# and <#2020-11-21#
    – czyli od godziny zero 20-go do wartości dat mniejszych od godziny zero dnia 21-go.
    Ewentualnie, pamiętając o tym, że data to liczba -można wstawić dodatkowe pole w kwerendzie oparte na formule =Clng([Pole daty]) i w tym polu wpisać kryterium:
    CLng(#2020-04-16#)
  • Wartości liczbowe
    kryteria wyboru są tu proste, znane z matematyki. Działają tu wszystkie operatory matematyczne typu > czy <.
    W stosunku do wartości liczbowych można tez stosować konstrukcję Between…And…
  • Prawda/Fałsz
    tu jako kryterium wystarczy wpisać po prostu Prawda lub Fałsz. Można też zastosować wartości liczbowe:
    0 – fałsz
    -1 – prawda

Niezależnie od typu danych często pojawia się konieczność wyszukania z brakiem wartości w danym polu. Kryterium dla takich rekordów to:
Is Null – dla  pustych rekordów
Is Not Null – dla niepustych rekordów

 


 

Kurs Access - kwerendy

Filtrowanie w kwerendzie wybierającej

Filtrowanie rekordów w kwerendzie wybierającej definiowane jest w oknie widoku projektu kwerendy. 


Kryteria wyszukiwania rekordów wpisywane są w zaznaczone wiersze kwerendy. Obowiązuje tu zasada,  że kryteria wpisane w tym samym wierszu muszą być spełnione łącznie. Kolejne wiersze kryteriów są dodawane do filtrowania jako alternatywa czyli ze słowem kluczowym LUB.

Np. dla tabeli ze screenu poniżej:

spróbujmy wyfiltrować rekordy, w których Autor to Agata Christie oraz cena jest wyższa niż 20zł. Zapis kwerendy to:

a wyfiltrowane dane (czyli kwerenda w widoku Arkusza) to:

Kwerenda pokazująca rekordy, w których Autor to Agata Christie lub cena jest wyższa niż 20zł to:

w widoku Arkusza:

Oczywiście kryteria wyszukiwania nie muszą być tak ściśle określone jak w powyższych przykładach. W zależności od typu danych można je zdefiniować bardziej wieloznacznie.
Kryteria wyszukiwania


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