www.chomikuj.pl/MarWag987
Przeszukiwanie bazy w celu znalezienia rekordów spełniających założone warunki odbywa
się przez uzupełnianie siatki Kryteriów w projekcie kwerendy, lub ręczne pisanie polecenia
SQL.
Warunki dla różnych typów pól.
DATA/GODZINA. Jeśli w kryteriach ustawiony zostanie dowolny warunek logiczny, np.
data uradzenia osób powinna być późniejsza niż 1 stycznia 1950 roku-wtedy w kolumnie Data
Urodzenia w wierszu kryteria wpisuje się formułę '>1950-01-01' lub '>#1950-01-01#'. Znaki #
są dopisywane automatycznie dla prostych warunków, dla bardziej skomplikowanych
użytkownik musi o nich pamiętać.
TEKST. Gdy przeszukujemy bazę wg pól tekstowych należy w wierszu kryteria wpisać
żą
dane słowo np.:'kowalski' lub "kowalski". Znaki "(cudzysłowu) są dopisywane
automatycznie dla prostych warunków, dla bardziej skomplikowanych użytkownik musi o
nich pamiętać. W przypadku wybierania rekordów spełniających kryterium tekstowe możemy
ograniczyć liczbę wpisywanych liter przez zastosowanie funkcji LIKE, która powoduję że
kwerenda nie szuka całkowicie zgodnego wzorca, lecz porównuje wpisaną część wyrazu lub
pojedyncze litery i znajduje odpowiednie rekordy.
Oto przykład: LIKE "k*" -wyszukane zostaną rekordy, w których pierwsza litera nazwiska
jest równa 'k'. Zapis w SQL:
SELECT Osoby.ID, Osoby.Imie, Osoby.Nazwisko, Osoby.[Data urodzenia], Osoby.rolnik
FROM Osoby
WHERE (((Osoby.Nazwisko) Like "k*"));
LICZBA. Ten typ Ola nie posiada wymagań jeśli chodzi o dopisywanie znaków specjalnych
pomagających odróżnić wzorzec warunku od składni pytania. Język wydawania warunków
logicznych jest oparty na stosowaniu nawiasów wskazujących kolejność obliczeń i algebry na
zbiorach.
Oto przykład (zastosowany na polu powierzchni działki): '>0,4352' - zapis oznacza, że
szukane są rekordy(działki), które posiadają powierzchnię większą niż 0,4352 ha;
' >0,4352 and <0,8762' - zapis oznacza, że szukane są rekordy(działki), które posiadają
powierzchnię w przedziale pomiędzy 0,4352 a <0,8762 ha, można uzyskać ten sam efekt za
pomocą polecenia 'BETWEEN 0,4352 and 0,8762'
LOGICZNE (Tak/Nie, Prawda/Fałsz). W polu tego typu wybieramy rekordy z zaznaczonym
polek TAK lub PRAWDA przez wpisanie w polu kryteriów wyboru wartości '-1', natomiast
wartość rekordów NIE lub FAŁSZ znajdujemy przez wpisanie w pole kryteriów wartości '0'.
Przykład kwerendy w widoku projekt, i odpowiadająca jej składnia w języku SQL
SELECT Osoby.ID, Osoby.Imie, Osoby.Nazwisko, Osoby.[Data urodzenia], Osoby.rolnik,
Działki.Powierzchnia
FROM Osoby INNER JOIN Działki ON Osoby.ID = Działki.ID
WHERE (((Osoby.Imie)="Anna") AND ((Osoby.Nazwisko) Like "k*") AND ((Osoby.[Data
urodzenia])>#1/1/1950#) AND ((Osoby.rolnik)=-1) AND ((Działki.Powierzchnia) Between
0.5 And 0.94));
www.chomikuj.pl/MarWag987
GRUPOWANIE WYRAŻEŃ. Jeżeli w kwerendzie umieścimy wszystkie warunki w jednym
wierszu kryteriów - będzie oznaczało to, że rekordy będą musiały spełniać wszystkie warunki
jednocześnie. Będzie to część wspólna zbiorów, z których każdy z nich będzie zbiorem
rekordów spełniających poszczególne kryteria.
Jeżeli w kwerendzie umieścimy warunki w wielu wierszach kryteriów wyboru, będzie
oznaczać to wyszukiwanie rekordów, które spełniają przynajmniej jeden z warunkow
logicznych, będą one (warunki logiczne) połączone operatorem 'OR'.
Oto przykład takiego zapisu w widoku projektu kwerendy i odpowiadająca mu składnia
języka SQL
SELECT Osoby.ID, Osoby.Imie, Osoby.Nazwisko, Osoby.[Data urodzenia], Osoby.rolnik,
Działki.Powierzchnia
FROM Osoby INNER JOIN Działki ON Osoby.ID = Działki.ID
WHERE (((Osoby.[Data urodzenia])>#1/1/1950#) AND ((Działki.Powierzchnia) Between 0.5
And 0.94)) OR (((Osoby.Nazwisko) Like "k*")) OR (((Osoby.Imie)="Anna")) OR
(((Osoby.rolnik)=-1));
Kilka przykładów zastosowania funkcji LIKE:
symbole wieloznaczne Accessa:
* - dopasowuje dowolny ciąg znaków w danym polu,
? - dopasowuje dowolny pojedynczy znak w danycm polu,
[] - określają zakres znaków (również wartości liczbowe,
! - wyklucza znak z zakresu określonego za pomocą []
Like "G*" - zwróci rekordy których przeszukiwane pole zaczyna się na literę "G"
Not Like "G*" - zwróci rekordy których przeszukiwane pole nie zaczyna się na literę "G"
Like "[A-G]*" - zwróci rekordy których przeszukiwane pole zaczyna się na litery
A,B,C,D,E,F lub G
Not Like "[A-G]*" - zwróci rekordy których przeszukiwane pole nie zaczyna się na litery
A,B,C,D,E,F lub G
Like "[A-G,T-Z]*" - zwróci rekordy których przeszukiwane pole zaczyna się na litery
A,B,C,D,E,F,G,T,U,W,V,Z
Like "an*" - zwróci rekordy których przeszukiwane pole zaczyna się od "an"
Like "*an*" - zwróci rekordy których przeszukiwane pole w dowolnej pozycji zawiera "an"
Like "b?c*" - zwróci rekordy których przeszukiwane pole na pierwszej pozycji zawiera literę
"b" a na trzeciej "c"
Like "c[a-c]*" - zwróci rekordy których przeszukiwane pole na pierwszej pozycji zawiera
literę "c" a na drugiej ma literę "a", "b" lub "c"
Like "c[!a-c]*" - zwróci rekordy których przeszukiwane pole na pierwszej pozycji zawiera
literę "c" a na drugiej nie ma litery"a", "b" ani "c"