Bazy danych I
temat 4:
Makra – 2 ćw.
Uwaga:
Przed rozpoczęciem wykonywania poniższych zadań należy zapoznać się z materiałem wyłożonym na wskazanych stronach podręcznika:
Dariusz Boratyn, Microsoft Office Access97, Croma, 1997 (264-305).
Lech Banachowski, Bazy danych. Tworzenie aplikacji, Akademicka Oficyna Wydawnicza PLJ, Warszawa 1998 (121-128).
Uwaga Punkty z gwiazdkami wymagają trochę więcej samodzielnej pracy.
Do w
ykonania poniższych zadań jest potrzebna baza danych BIBLIOTEKA będąca rezultatem realizacji tematów 2 i 3. Potrzebny jest też utworzony uprzednio (na ćwiczeniach 5 w ramach tematu 3) formularz Książki w bibliotece.
Zadanie 1
W tym zadaniu utworzysz formularz wyświetlający książki, którego zadaniem będzie pomóc użytkownikowi w przeglądaniu książek dostępnych w bibliotece i w szczególności w ich wyszukiwaniu po temacie i po autorze. Nie zapomnij o wyłączeniu kreatora formantów.
- Używając opcji
Autoformularz: Kolumnowy, utwórz formularz "Wyszukiwanie książek", którego źródłem rekordów jest tabela Książki. Przejdź do widoku projekt i w nagłówku formularza umieść: tytuł "Wyszukiwanie książek według tematu i autora";
W nagłówku formularza umieść przycisk poleceń (przeciągnij z przybornika), nadaj mu nazwę: "Zamknij formularz". Z menu podręcznego wybierz Projektuj zdarzenie, a następnie Konstruktor makr. Podaj nazwę tworzonego makra Zamknij formularz i w siatce makra wybierz akcję Zamknij. W kolumnie komentarza wyjaśnij kontekst, w którym ta akcja będzie wykonywana. Zamknij okienko definiujące makro i sprawdź działanie utworzonego przycisku.
W stopce formularza umieścisz za chwilę zestaw przycisków, których zadaniem będzie ułatwić korzystanie z formularza zwykłemu użytkownikowi. Z każdym przyciskiem trzeba związać odpowiednie makro. Ze względu na dużą liczbę makr, należy je łączyć w grupy, względem wspólnej cechy funkcjonalnej. Przygotujemy grupę makr odpowiadających za wyświetlanie kolejnych książek (w tył i w przód).
Wybierz opcję Makra w oknie bazy danych, a następnie przycisk Nowy. Wprowadź kolumnę "Nazwa makra" (albo z menu podręcznego albo z menu Widok albo z paska narzędzi). Zdefiniuj makra: pierwsza książka, poprzednia książka, następna książka, ostatnia książka (skorzystaj z akcji IdźDoRekordu).
W stopce formularza utwórz cztery przyciski poleceń (przenosząc je z przybornika). W arkuszu właściwości przycisków na karcie Zdarzenie, zdarzeniu "Przy kliknięciu" przypisz odpowiednie makro z utworzonej grupy makr: nazwa_grupy_makr.nazwa_makra (skorzystaj z listy rozwijanej). Natomiast na karcie Format wywołaj konstruktor rysunków dla właściwości Rysunek. Dobierz ikony, które uważasz za odpowiednie z punktu widzenia użytkownika. A może napis na przycisku polecenia byłby lepszy dla końcowego użytkownika?
- Do nagłówka formularza wprowadź teraz listę rozwijaną (niezwiązaną) i jako
Źródło wierszy określ tabelę Tematy (na karcie Dane), natomiast na karcie Format określ Liczba kolumn na 2, Szerokości kolumn na 0cm;3cm. Na karcie Inne ustal wartość Nazwa na Wybór tematu. Należy teraz spowodować, aby każde wybranie przez użytkownika tematu na liście Wybór tematu powodowało nałożenie filtru na wyświetlane książki ograniczając je do danego tematu. W arkuszu właściwości pola listy rozwijanej, na karcie Zdarzenia, dla zdarzenia Po aktualizacji, wywołaj Konstruktor makr i zdefiniuj makro, z jedną akcją ZastosujFiltr z argumentem Warunek WHERE ustawionym na:
[Id tematu]=[Formularze]![Wyszukiwanie książek]![Wybór tematu]
Do nagłówka wprowadź teraz przycisk polecenia, którego zadaniem będzie zamknięcie bieżącego formularza i wyświetlenie formularza Książki w bibliotece. Zdarzeniu Przy kliknięciu przypisz (używając konstruktora makr - trzy kropki) makro złożone z następujących akcji:
OknoKomunikatu - jako argument wpisz tekst komunikatu informującego użytkownika co za chwilę się stanie.
Zamknij - zamknij bieżący formularz,
Otwórz formularz - jako argument wybierz formularz Książki w bibliotece z listy rozwijanej związanej z polem Nazwa formularza.
Zamknij okno makra i przetestuj zamykanie bieżącego formularza i otwieranie nowego.
** Z kolei utwórz listę rozwijaną Wybór autora, z której użytkownik będzie wybierał autora, którego książki mają być wyświetlone. W tym celu trzeba przede wszystkim utworzyć kwerendę Autorzy książek, która na pierwszym miejscu będzie zwracać Id autora, natomiast w drugiej i trzeciej kolumnie nazwisko i imię autora (osoby nie będące autorami nie powinny się znaleźć na tej liście). Utworzonej liście rozwijanej przypisz jako Źródło wierszy tę kwerendę (ustalając liczbę kolumn na 3 i chowając pierwsze pole Id autora). Zdarzeniu Po aktualizacji listy Wybór autora przypisz makro z akcją ZastosujFiltr z następującym argumentem Warunek WHERE:
[ISBN] In (SELECT ISBN FROM Autorzy WHERE [Id osoby] =Form
ularze![Wyszukiwanie książek]![Wybór autora])
(
Wyrażenie SELECT należące do języka SQL zostanie wyjaśnione w temacie 5. Powyższy warunek WHERE odczytujemy: wartość pola ISBN w formularzu Wyszukiwanie książek ma należeć do listy złożonej z tych ISBN, których autorem jest osoba wybrana na liście rozwijanej Wybór autora.)
Podsumowanie:
W zadaniu 1 poznałeś dwa zdarzenia: Przy kliknięciu (przycisku) i Po aktualizacji (listy rozwijanej). W makrach będących wartościami odpowiednich właściwości zdarzeń użyłeś akcje: Zamknij (bieżący formularz), IdźDoRekordu (nawigacja po zbiorze rekordów), OknoKomunikatu (wyświetl użytkownikowi informację), OtwórzFormularz (wyświetl na ekranie nowy formularz) i ZastosujFiltr (filtrujący wyświetlane rekordy na formularzu).
Zadanie 2
Zaprojektuj dwa niezależne, zsynchronizowane formularze: Wyświetl tematy i Wyświetl książki (nie używaj kreatora formularzy). Zakładamy, że jako pierwszy będzie wyświetlany formularz Wyświetl tematy, na którym będą wyświetlane tematy książek w bibliotece. Po naciśnięciu przycisku Wyświetl książki, ma zostać wyświetlony, obok na ekranie, formularz Wyświetl książki - zawierający wyłącznie książki na wybrany temat (można to zrealizować ustawiając w akcji OtwórzFormularz odpowiedni Warunek WHERE). Po zmianie tematu, w formularzu Wyświetl książki powinny się pojawić książki na nowy temat (można to zrealizować oprogramowując dla formularza Wyświetl tematy zdarzenie Przy bieżącym i używając pomocniczej funkcji IsLoaded razem z akcją OtwórzFormularz. Funkcję IsLoaded (omawianą na wykładzie) sprawdzającą czy formularz Wyświetl książki jest już wyświetlony na ekranie, należy użyć jako warunek wykonywania akcji (w kolumnie siatki makra tworzonej albo za pomocą Widok->Warunki albo za pomocą narzędzia z paska narzędzi albo z menu podręcznego)).
Zadanie 3
Zaprojektuj formularz, na którym bibliotekarka będzie odnotowywać wypożyczenie i zwrot książki przez czytelnika.
Zadanie 4
Zaprojektuj formularz Panel aplikacji, na którym przyciski będą kierować do wszystkich utworzonych do tej pory przez ciebie formularzy. Nie zapomnij też o przycisku Zakończ aplikację (akcja Zakończ). Jeśli któryś z twoich formularzy wymaga dodania dodatkowych przycisków (na przykład służących do jego zamknięcia) - wprowadź je.