4. Kwerendy - uzupełnienie

Transkrypt

4. Kwerendy - uzupełnienie
Kwerendy
4.
Kwerendy - uzupełnienie
4.3
Przykłady kwerend cd.
1
W bieŜącym punkcie przedstawione zostaną dodatkowe kwerendy wybierające oraz
kwerendy modyfikujące dane, które rozszerzą moŜliwości bazy „Biblioteka”.
Kwerenda “Ostatni wypoŜyczał”
Zadaniem kwerendy jest wygenerowanie listy osób, które jako ostatnie wypoŜyczyły
ksiąŜki aktualnie znajdujące się na terenie biblioteki. Na liście powinny znaleźć się ich
nazwiska i adresy oraz sygnatury ksiąŜek. Podobnie jak w projekcie poprzedniej
kwerendy do rozwiązania tak postawionego zadania zostanie wykorzystana kwerenda
pomocnicza, która wykona konieczne przeliczenia i wygeneruje listę zawierającą
sygnatury ksiąŜek i identyfikatory osób, które je jako ostatnie wypoŜyczały.
Rozwiązaniem właściwego problemu zajmie się druga kwerenda, która korzystając z
wyników kwerendy poprzedniej wygeneruje odpowiednią listę.
Kwerenda “Ostatni wypoŜyczał - pomocnicza”
Zgodnie z powyŜszym opisem kwerenda powinna wyświetlać listę zawierającą
sygnatury ksiąŜek i identyfikatory osób, które je jako ostatnie wypoŜyczały. Wszystkie
dane niezbędne do uzyskania takich informacji znajdują się w tabeli „WypoŜyczenie”.
Problem polega na tym, Ŝe tabela ta zawiera informacje o wszystkich wypoŜyczeniach,
które były realizowane przez bibliotekę. KaŜda z ksiąŜek moŜe wielokrotnie pojawiać
się w tej tabeli, poniewaŜ była wielokrotnie wypoŜyczana i zwracana.
W celu uzyskania właściwej informacji, dane opisujące wypoŜyczenia naleŜy
pogrupować tak aby w jednej grupie znalazła się historia wypoŜyczeń pojedynczej
ksiąŜki, grupowanie naleŜy więc wykonać po polu „IDKs”. W kwerendzie omawianej w
poprzednim przykładzie elementy kaŜdej z grup były zliczane (wybrana została
operacja Policz). W tym przypadku naleŜy wybrać identyfikator wypoŜyczającego z
ostatniego wpisu w obrębie grupy, wynik taki moŜna uzyskać wybierając operację
Ostatni dla pola „IDWyp”. Po uruchomieniu tak zaprojektowanej kwerendy
generowana byłaby lista zawierającą sygnatury ksiąŜek i identyfikatory osób, które je
jako ostatnie wypoŜyczały. W liście tej widoczne byłyby informacje o wszystkich
wypoŜyczanych ksiąŜkach.
Zgodnie z załoŜeniami naleŜy wyświetlić informacje wyłącznie o ksiąŜkach
aktualnie niewypoŜyczonych. KsiąŜka znajduje się na terenie biblioteki jeŜeli data
zwrotu ostatniego z wpisów jest wypełniona. Projekt kwerendy naleŜy więc
rozbudować o pole „DataZwrotu” wybierając dla niego operację Ostatni. Po takiej
modyfikacji kwerenda wyświetlałaby listę zawierającą sygnatury ksiąŜek oraz
informacje o ostatnim wypoŜyczeniu w postaci identyfikatora wypoŜyczającego i daty
2
Wprowadzenie do projektowania baz danych
zwrotu. Zgodnie z przyjętymi załoŜeniami listę naleŜy zawęzić wyświetlając jedynie
informacje o ksiąŜkach aktualnie niewypoŜyczonych. Projekt kwerendy naleŜy więc
uzupełnić wprowadzając w wierszu Kryteria pola „DataZwrotu” warunek Not Is Null.
Warunek ten jest spełniony dla wypoŜyczeń, których data zwrotu jest wypełniona.
Rys. 4.8 Projekt kwerendy “Ostatni wypoŜyczał - pomocnicza”
Właściwa kwerenda “Ostatni wypoŜyczał”
Nazwiska i adresy osób które jako ostatnie wypoŜyczały ksiązki moŜna otrzymać
budując kwerendę wykorzystującą kwerendę pomocniczą oraz tabelę „WypoŜyczający”.
Rys. 4.9 Projekt kwerendy “Ostatni wypoŜyczał”
Kwerendy
3
Kwerenda “Upomnienia”
Kwerendy mogą wykonywać obliczenia nie tylko na grupach rekordów ale równieŜ
na pojedynczych rekordach. Gdyby tabela „KsiąŜki” zawierała informacje o cenie netto
ksiąŜki, moŜna by zaprojektować kwerendę obliczającą cenę brutto kaŜdej z ksiąŜek.
Zadaniem omawianej tutaj przykładowej kwerendy „Upomnienia” jest wyświetlenie
listy z danymi wypoŜyczających, którym naleŜy wysłać upomnienia z powodu
przetrzymywania wypoŜyczonych ksiąŜek. W liście tej obok danych wypoŜyczającego i
informacji o przetrzymywanej przez niego ksiąŜce powinna znaleźć się dopuszczalna
data zwrotu (wynikająca z daty wypoŜyczenia i terminu na jaki wypoŜyczający moŜe
wypoŜyczać ksiąŜki) oraz liczba dni, które od tej daty upłynęły.
Do skompletowania wszystkich niezbędnych danych naleŜy wykorzystać cztery
tabele: „KsiąŜki”, „WypoŜyczenie”, „WypoŜyczający” oraz „Kategoria”. Po
odpowiednim połączeniu tych tabel i wyborze pól z danymi wypoŜyczającego i
wypoŜyczonej przez niego ksiąŜki, kwerenda wyświetlałaby informacje o wszystkich
wypoŜyczeniach. Upomnienia naleŜy jednak wysyłać wyłącznie osobom, które
aktualnie przetrzymują ksiąŜki. Zdefiniowanie warunku Is Null dla pola „DataZwrotu”
pozwoli na otrzymanie informacji opisujących tylko aktualne wypoŜyczenia. Teraz
moŜna przejść do wykonania wymaganych obliczeń, tzn. dopuszczalnej daty zwrotu
oraz liczby dni, które od tej daty upłynęły.
Dopuszczalną datę zwrotu otrzymuje się w wyniku zsumowania daty wypoŜyczenia
i terminu na jaki wypoŜyczający moŜe wypoŜyczać ksiąŜki. Zdefiniowanie pola,
którego wartości są wynikiem wyraŜenia polega na wpisaniu tego wyraŜenia w wierszu
Pole arkusza QBE. WyraŜenie moŜe zawierać operatory matematyczne, nawiasy
okrągłe (w celu określenia właściwej kolejności wykonywania działań), ujęte w
nawiasy kwadratowe nazwy dostępnych w kwerendzie pól oraz nazwy funkcji
wbudowanych. WyraŜenie obliczające dopuszczalną datę zwrotu moŜna więc zapisać w
postaci: [DataWypoŜyczenia]+[Termin]. Dodatkowo moŜna równieŜ zdefiniować
nazwę dla tak zdefiniowanego nowego pola. W tym celu wyraŜenie definiujące sposób
wyznaczania wartości pola naleŜy poprzedzić odpowiednią nazwą. Jeśli nazwa ta nie
zostanie podana Access wygeneruje ją automatycznie. Nazwę pola naleŜy oddzielić od
właściwego wyraŜenia znakiem dwukropka. Ostatecznie, zakładając, Ŝe nazwą
definiowanego pola jest „MaxDataZwrotu”, w wierszu Pole naleŜy zapisać:
MaxDataZwrotu: [DataWypoŜyczenia]+[Termin].
Podobnie moŜna obliczyć ilość dni, które upłynęły od dopuszczalnej daty zwrotu. W
tym przypadku niezbędne jest jednak skorzystanie z wbudowanej funkcji Accessa –
Date(). Funkcja ta zwraca aktualną datę. Poszukiwana liczba dni jest wynikiem
wyraŜenia postaci: Uplynelo: Date() – [MaxDataZwrotu]. Otrzymana w ten sposób
wartość będzie liczbą dodatnią dla wypoŜyczeń, których termin zwrotu juŜ upłynął, a
ujemną jeśli pozostał jeszcze czas na oddanie ksiąŜki. Zadanie kwerendy miało polegać
na generowaniu informacji przydatnych podczas wysyłania upomnień. Stąd, naleŜy
ograniczyć jej wyniki wpisując w wierszu Kryteria definiowanego właśnie pola
warunek „>0”.
4
Wprowadzenie do projektowania baz danych
Rys. 4.10 Projekt kwerendy “Upomnienia”
Kwerenda “WydłuŜ terminy”
Kwerendy mogą być wykorzystywane nie tylko do wyświetlania informacji z bazy
danych czy wykonywania obliczeń, mogą równieŜ aktualizować dane w tabelach.
Zadaniem omawianej tu kwerendy jest wydłuŜenie o 30 dni czasu po którym
wypoŜyczający powinni zwracać ksiąŜki. Kwerenda ta powinna więc modyfikować
dane znajdujące się w tabeli „Kategoria”.
Po przejściu do projektu nowej kwerendy naleŜy zmienić jej typ z kwerendy
wybierającej na kwerendę aktualizującą. Zmianę typu moŜna zrealizować przez wybór
opcji Kwerenda aktualizująca z menu Kwerendy lub naciskając jedenasty przycisk z
belki narzędziowej Projekt kwerendy. Modyfikacja typu kwerendy powoduje zmianę
wyglądu arkusza QBE, usuwane są wiersze Sortuj i PokaŜ, pojawia się natomiast nowy
wiersz Zamiana na.
Projektując kwerendę aktualizującą naleŜy do arkusza QBE przenieść wszystkie
pola, których wartości będą modyfikowane. Następnie w wierszu Zamiana na naleŜy
podać wyraŜenie (lub wprost wartość), którego wynik zostanie zapisany w wybranym
polu tabeli. JeŜeli nie zostanie określone Ŝadne kryterium zmodyfikowane zostaną
wszystkie wiersze tabeli.
WydłuŜenie czasu po którym wypoŜyczający powinni zwracać ksiąŜki moŜna
uzyskać modyfikując zawartość pola „Termin” z tabeli „Kategoria”. Ze względu na to,
Ŝe wartości terminów będą róŜne dla róŜnych kategorii wypoŜyczających nie moŜna w
wierszu Zamiana na podać wartości liczbowej. Konieczne jest napisanie
odpowiedniego wyraŜenia. WyraŜenie to powinno pobierać aktualną wartość „Terminu”
i powiększać go o 30, moŜna je więc zapisać w postaci: [Termin]+30.
Po uruchomieniu kwerendy aktualizującej Access automatycznie wyświetli
informację o liczbie rekordów które w wyniku jej działania zostaną zmienione.
UŜytkownik moŜe na tym etapie przerwać działanie kwerendy nie dopuszczając do
modyfikacji danych.
Kwerendy
5
Rys. 4.11 Projekt kwerendy “WydłuŜ terminy”
Kwerenda “Usuń wypoŜyczenia sprzed 4 lat”
Zadanie kwerendy w pełni opisuje jej nazwa, tzn. powinna ona usuwać archiwalne
dane z tabeli „WypoŜyczenie”. Dane powinny zostać usunięte w przypadku gdy od daty
zwrotu ksiąŜki minęły co najmniej 4 lata (tzn. 4*365 dni = 1460 dni).
Podobnie jak przy definiowaniu kwerendy aktualizującej, po przejściu do projektu
nowej kwerendy naleŜy zmienić jej typ. Zmianę typu moŜna zrealizować przez wybór
opcji Kwerenda usuwająca z menu Kwerendy lub naciskając jedenasty przycisk z
belki narzędziowej Projekt kwerendy. Modyfikacja typu kwerendy powoduje zmianę
wyglądu arkusza QBE, usuwane są wiersze typowe dla kwerend wybierających,
pojawia się natomiast nowy wiersz Usuwanie. W wierszu tym dostępne są dwie
wartości Skąd oraz Gdzie. Wartość Skąd wybiera się w celu wskazania tabeli z której
usuwane będą dane. Aby wskazać tabelę naleŜy wybrać jedno z jej pól lub „*”
oznaczającą wszystkie pola tabeli i ustawić Skąd w wierszu Usuwanie. W przypadku
gdy w projekcie kwerendy wybrana jest tylko jedna tabela Access automatycznie
przyjmuje, Ŝe dane będą usuwane właśnie z tej tabeli - nie ma więc potrzeby
dodatkowego wskazywania skąd usuwane będą dane.
Projektując kwerendę usuwającą naleŜy zwykle ustalić jeszcze kryterium, które
muszą spełniać wiersze tabeli aby zostały usunięte. Kryterium to definiuje się w taki
sam sposób jak w przypadku kwerend wybierających. NaleŜy do arkusza QBE
przenieść odpowiednie pole lub zdefiniować wyraŜenie, którego wartość będzie
decydowała o usuwaniu rekordów tabeli. Następnie w wierszu Kryteria naleŜy
zdefiniować właściwy warunek i dodatkowo w wierszu Usuwanie wybrać Gdzie. W
przypadku braku definicji kryterium, po uruchomieniu kwerendy program podejmuje
próbę usunięcia wszystkich wierszy wskazanej tabeli.
6
Wprowadzenie do projektowania baz danych
Projektowana tu kwerenda powinna usuwać dane z tabeli „WypoŜyczenie”, warunek
którego wartość będzie podstawą decyzji o usuwaniu jej wierszy moŜna skonstruować
wykorzystując pole „DataZwrotu” tej tabeli. Do projektu kwerendy naleŜy dodać
wyłącznie tabelę „WypoŜyczenie”, w tym przypadku nie ma więc konieczności
dodatkowego wskazywania tabeli, której wiersze będą usuwane. NaleŜy jedynie
skonstruować odpowiedni warunek.
Na poniŜszym rysunku widać, Ŝe skonstruowane zostało nowe pole: „Minęło”,
którego wartość odpowiada liczbie dni, który upłynęły od daty zwrotu ksiąŜki. Wiersz
tabeli zostanie usunięty w przypadku gdy pole „DataZwrotu” jest wypełniona a
„Minęło” ma wartość większą niŜ 1460.
Rys. 4.12 Projekt kwerendy „Usuń wypoŜyczenia sprzed 4 lat”
Po uruchomianiu kwerendy usuwającej Access automatycznie wyświetla informację
o liczbie usuwanych rekordów, a uŜytkownik moŜe na tym etapie przerwać działanie
kwerendy nie dopuszczając do usuwania danych.

Podobne dokumenty