Kwerendy 1 4. Kwerendy - uzupełnienie 4.3 Przykłady kwerend cd. 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 Kwerenda WydłuŜ terminy Rys. 4.10 Projekt kwerendy Upomnienia 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.