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.