Tworzenie makr warunkowych Czasami chcemy, aby makro lub akacja makra były wykonywane tylko wtedy, gdy spełniony jest jakiś warunek. Na przykład chcemy utworzyć makro drukujące raport, ale tylko wtedy, gdy ilość rekordów do drukowania jest większa od zera (logiczne, prawda?). W takim wypadku możemy dodać w projekcie makra warunek. Jeżeli warunek jest spełniony, akcja makra zostaje wykonana, jeżeli nie makro przechodzi do następnej akcji. Aby dodać warunek do konkretnej akcji makra, korzystamy z kolumny Warunek. Wpisujemy do niej kryteria, które muszą być spełnione, aby akcja mogła być wykonana. Makro warunkowe przedstawię na przykładzie obsługi formularza niezwiązanego frmwyborraportu. Formularz pozwala wydrukować jeden z wybranych raportów. Wyboru dokonujemy, wskazując jeden z przycisków opcji, a następnie klikając przycisk Drukuj. Przyciski opcji umieszczone są w obrąbie grupy opcji. Każdemu z nich przypisano wartość liczbową (pierwszemu 1, drugiemu 2, itd.). Testowanie tej wartości odbywa się w kolumnie Warunek makra warunkowego. Grupę opcji najlepiej utworzyć przy pomocy Kreatora grup opcji. W Przyborniku zaznaczamy najpierw narzędzie Użyj kreatorów formantów, a następnie polecenie Grupa opcji. Przeciągnięcie kursorem myszki po projekcie formularza spowoduje powstanie zarysu grupy opcji i uruchomienie Kreatora. 1
W pierwszym oknie dialogowym wpisujemy etykiety poszczególnych opcji, jak na rysunku poniżej: Dalsza obsługa kreatora jest prosta i sprowadza się do kilku prostych wyborów. Warto jedynie zapamiętać wartości przypisane każdej z opcji będziemy je wykorzystywać w projektowaniu makra. 2
Po zakończeniu pracy Kreatora dobrze jest zaznaczyć grupę opcji i zmienić jej nazwę w Arkuszu Właściwości na dokładniej określającą charakter formantu. Kreator automatycznie nazywa poszczególne obiekty na formularzu, ale nazwy są tworzone według schematu: Ramka26, Etykieta21, Opcja5 itd. Nazwijmy grupę opcji OpcjeWydruku. Taka nazwa lepiej oddaje przeznaczenie formantu niż Ramka34. Przyciski poleceń formularza tworzymy bez udziału Kreatora formantów. Teraz kolej na makro mkrprzyciskiwyborraportu. Oto fragment jego projektu: Właściwie jest to grupa makr. Na rysunku powyżej widzimy tylko fragment pierwszego - DrukujRaport. Jest to makro warunkowe, wywoływane poprzez kliknięcie przycisku Drukuj formularza frmwyborraportu. W kolumnie Warunek widzimy warunki sprawdzane dla poszczególnych przycisków grupy opcji. Okno Powiększenie pokazuje zapis jednego z warunków. Wygląda dość tajemniczo. Otóż do dowolnego formantu w otwartym formularzu odwołujemy się w następujący sposób: [Formularze]!nazwa_formularza!nazwa_formantu W naszym przykładzie otwarty formularz to frmwyborraportu, a OpcjeWydruku - to nazwa grupy opcji. Po spełnieniu warunku zwracana jest wartość True i akcja jest wykonywana. Jeżeli, tak jak na rysunku, warunek ma dotyczyć wszystkich akcji w makrze, każda następna akcja powinna zawierać znak wielokropka w kolumnie Warunek. Wtedy warunek jest sprawdzany tylko raz i po zwróceniu wartości True Access podejmuje decyzją o wykonaniu dodatkowych akcji. 3
W naszym przykładzie po spełnieniu warunku Access wykonuje akcję UruchomMakro, które polega na rozpoczęciu wykonywania kolejnego makra, tj. akcji wyświetlania klepsydry (akcja jest przydatna podczas długich obliczeń, kiedy nie jesteśmy pewni, czy aby program się nie zawiesił) oraz akcji wyświetlenia odpowiedniego raportu w widoku Pogląd wydruku. Warunek WHERE i ustawienie wartości w makrach Obok ustalania warunków wykonania makra, dla niektórych akcji możemy ustalić warunek innego typu. Takie makra stosujemy wtedy, gdy na formularzu chcemy wyświetlić dane przefiltrowane, spełniające określone kryteria. Popatrzmy na następujący projekt grupy makr. Grupa obsługuje przyciski formularza frmzamowieniaklientow. Po wybraniu klienta z listy klikamy odpowiedni przycisk, co powoduje otwarcie formularza frmzamowienia, jednak nie z pełnym zestawem rekordów, ale z zestawem należącym do wybranego klienta (przefiltrowanym wg kryterium IdKlienta). 4
Dwie pierwsze akcje sprawdzając, czy wybraliśmy klienta z listy. Jeżeli nie, Access dyskretnie przypomina o tym dzięki akcji OknoKomunikatu, po czym makro zatrzymuje się. Natomiast jeśli wybierzemy klienta i klikniemy przycisk Zamówienia klienta, w makrze Zamowienia spełniony jest warunek Not IsNull wobec pola kombi, a zatem uruchamiana jest akcja OtwórzFormularz, otwierająca formularz frmzamowienia. Akcja ma w naszym makrze dodatkowy argument WHERE, bez którego formularz zawierałby pełen zestaw rekordów: [IdKlienta]=[Formularze]![frmZamowieniaKlientow]![cmbKlient] Dzięki warunkowi otwierany formularz frmzamowienia będzie wyświetlał jedynie rekordy zamówień wybranego klienta. Ostatnia akcja makra Zamowienia zamyka formularz frmzamowieniaklientow. 5