Makra programu Microsoft Access. Czym są makra w programie Microsoft Access? Makro programu Microsoft Access: to narzędzie, które pozwala na automatyzację szeregu zadań wykonywanych w tym programie, związane są z wykonywaniem czynności związanych z przetwarzaniem danych, przechowywanych w bazie danych Microsoft Access, pozwalają na dodanie pewnych funkcjonalności do formularzy i raportów można o nich myśleć w kategoriach uproszczonego języka programowania jest budowana pewna lista czynności, jakie mają być wykonane oraz jest podejmowana decyzja, kiedy mają one zostać wykonane. Każde z wykonywanych zadań w ramach makra to akcja lub zestaw akcji. Tworzenie makra w programie Microsoft Access polega na wyborze akcji z listy i wypełnieniu ich sekcji argumentów (tj. wartości, które przenoszą informacje do czynności). Po uruchomieniu akcje makra są wykonywane w kolejności, w jakiej były umieszczone na liście oraz przy użyciu podanych obiektów lub danych. Aby uruchomić makro, należy wybrać polecenie Uruchom makro, które znajduje się na wstążce w grupie Narzędzia bazy danych. Przykłady czynności, które można zautomatyzować za pomocą makr Każda powtarzająca się rutynowa czynność wykonywana w programie Microsoft Access nadaje się do zautomatyzowania za pomocą makra. Pozwala to zwiększyć skuteczność i dokładność obsługi bazy danych, ponieważ zadanie jest za każdym razem wykonywane tak samo. Stosując makra można przykładowo: Połączyć działanie formularzy i raportów często jest konieczne korzystanie z dwóch formularzy zawierających powiązane dane. Np. w jednym formularzu można oglądać dane o dostawcach, a w drugim informacje o dostarczanych przez niego produktach. Można zatem dodać do formularza Dostawcy przycisk polecenia i wykorzystać makro do automatycznego otwierania formularza Produkty i wyświetlania w nim tylko produktów danego dostawcy. Można również dodać przycisk służący do uruchomienia wydruku raportu - np. do wydruku faktury lub etykiety adresowej wprost z formularza do wprowadzania nowych zamówień. Automatycznie wyszukiwać i filtrować rekordy makra mogą przyśpieszać proces wyszukiwania żądanych rekordów. Np. można dołączyć makro do przycisku w formularzu pracowników, w celu automatycznego filtrowania rekordów - np. wszystkich klientów pochodzących z Polski. Ustawiać wartości w elementach sterujących za pomocą makra można przypisywać elementom sterującym formularza wynik obliczenia lub wartość z innej tabeli. Np. można dodając produkt w formularzu zamówienia użyć makra do automatycznego wyszukiwania aktualnej ceny jednostkowej produktu i wstawienia jej do elementu sterującego formularza. Zapewnić poprawność danych makra doskonale nadają się do obsługi danych specjalnego typu oraz sprawdzania poprawności w formularzach. Np. można użyć makra do wyświetlania różnych komunikatów w odpowiedzi na typ wprowadzanych danych. Przypuśćmy, że mamy klientów z wielu krajów. Makro może wtedy służyć do sprawdzania, czy podany dla nowego klienta kod pocztowy jest zgodny z normami danego kraju. Ustawić właściwości w formularzach, raportach i elementach sterujących makra mogą być używane do ustawiania większości właściwości formularzy, raportów i elementów sterujących. Np. mogą być używane do 1
ukrywania formularza, kiedy nie powinien być widoczny na ekranie, a wyświetlane w nim dane są w dalszym ciągu potrzebne. Automatycznie przenosić dane makro może służyć do automatycznego importu lub eksportu danych pomiędzy plikami różnych formatów. Jeśli na przykład przy końcu tygodnia dane o sprzedaży są eksportowane do arkusza danych programu Microsoft Excel. Zadanie to można zautomatyzować tak, aby można je było wykonać za pomocą jednego kliknięcia przycisku. Tworzyć własne środowisko robocze makro może służyć do otwierania grupy kwerend, formularzy i raportów wraz z otwarciem bazy danych. Dodatkowo można za pomocą makra dostosować paski menu formularzy. Dzięki makrom można połączyć części bazy danych tworząc interakcyjną aplikację obsługi bazy danych program, który realizuje konkretne zadanie lub serię zadań, takich jak rejestrowanie sprzedaży lub informacji o fakturach. Podsumowując, wykorzystanie makr sprowadza się do zapewnienia automatyzacji podstawowych czynności wykonywanych w bazie inaczej mówiąc, automatyzacji interfejsu aplikacji bazodanowej. Reakcja na zdarzenia w formularzach/raportach Pewne zjawiska pojawiające się w formularzu/raporcie podczas korzystania z niego są traktowane jako zdarzenia. Zdarzeniem jest przejście z jednego rekordu do innego, jest nim dwukrotne kliknięcie elementu sterującego, itp. Makro może służyć do odpowiedzi na takie zdarzenie. Każdemu zdarzeniu formularza i elementu sterującego odpowiada właściwość zdarzenia. Do określenia reakcji elementu sterującego, formularza lub raportu na zdarzenie używa się makr (lub procedur języka VBA). Odpowiedniej właściwości zdarzenia formularza lub elementu sterującego należy przypisać nazwę makra. W celu określenia reakcji na zdarzenie najpierw trzeba wyznaczyć zdarzenie formularza lub elementu sterującego, któremu ma być przypisane makro. Następnie należy skonstruować makro zawierające akcje, które powinny być wykonywane, kiedy zdarzenie wystąpi oraz przypisać właściwości zdarzenia nazwę makra. Do tworzenia makra i automatycznego ustawienia właściwości zdarzenia można użyć konstruktora makr. Jest on dostępny dla każdej właściwości zdarzenia. Przykład makra w programie Microsoft Access Przykład. Makro zostanie zastosowane w celu zautomatyzowania czynności zamykania formularza. Zdarzeniu Przy kliknięciu dla przycisku Zamknij jest przypisane makro, za pomocą którego zamykany Od Microsoft Access 2010 istnieje możliwość skorzystania z konstruktora makr w celu ich utworzenia. 2
Konstruktor makr Od Microsoft Access 2010 istnieje możliwość skorzystania z konstruktora makr w celu ich utworzenia. Po wybraniu przycisku konstruktora makr, otwiera się jego okienko. Aby dodać do tworzonego makra nową akcję, należy kliknąć na pole kombi Dodaj nową akcję, dzięki czemu otworzy się lista akcji. Własności makr Każde makro ma nadaną nazwę. Makro zbudowane jest z akcji, które odpowiadają instrukcjom stosowanym w programie języka VBA. Istnieje możliwość przekonwertowania makra na procedurę tego języka. Większość akcji wymaga zdefiniowania jednego lub więcej argumentów (podobnie jak dla instrukcji, funkcji czy procedur w języku programowania). Można dodać warunki określające sposób uruchamiania każdej akcji. Makra można grupować i tworzyć grupy makr. Dla grupy makr należy każdemu makru przypisać unikatową nazwę. Nazwy makr W ramach procesu projektowania automatyzacji aplikacji bazodanowej Microsoft Access przy wykorzystaniu makr, łatwo może dojść do sytuacji, iż panel nawigacyjny zapełni się dużą ilością makr, choćby najczęściej używanymi do otwierania każdego z formularzy i raportów. Nazwy makr pozwalają na tworzenie jednego obiektu makra, który zawiera więcej niż jedno makro. 3
Podmakra W przypadku prezentowanego formularza Panel formularzy należy stworzyć przynajmniej po jednym oddzielnym makrze dla każdego przycisków, który otwiera formularz. Jeśli jednak wykorzystamy nazwy makr oraz możliwość tworzenia podmakr, wystarczy stworzyć jedno makro z podmakrami, iż każde z nich z osobna otwiera każdy pojedynczy formularz. Na formularzu mamy 6 przycisków poleceń i dla każdego z nich do właściwości Przy kliknięciu podłączamy podmakro Nazwa przycisku Właściwość Przy kliknięciu cmddaneklienta mcrpanelformularzy.otworzklient cmddanedostawcy mcrpanelformularzy.otworzdostawca cmddaneprodukt mcrpanelformularzy.otworzprodukt cmddanezamowienie mcrpanelformularzy.otworzzamowienie cmdlistaprodukty mcrpanelformularzy.listaprodukty cmdlistadostawcy mcrpanelformularzy.listadostawcy Nazwy podmakr Nazwa makra głównego 4
Odwołania do nazw elementów sterujących w wyrażeniach W makrach często pojawia się potrzeba odwołania do wartości elementu sterującego. W wyrażeniach odwołujących się do elementów sterujących należy korzystać z następującej składni: Formularze![nazwa formularza]![nazwa elementu sterującego] Raporty![nazwa raportu]![nazwa elementu sterującego] Nazwy obiektów należy umieszczać w nawiasach kwadratowych. W przypadku, gdy element sterujący jest umieszczony w formularzu lub raporcie, z którego makro zostało uruchomione, można skorzystać ze skróconej wersji odwołania. Ma ono postać: [nazwa elementu sterującego] Np. odwołanie [nr dostawcy] odnosi się do elementu sterującego Nr dostawcy w formularzu lub raporcie, z którego makro zostało uruchomione. Uwaga. Jeśli nie ma pewności, które makro zostanie uruchomione lub jeśli makro ma być uruchomione w różnych formularzach, raportach lub zdarzeniach, w odwołaniach do elementów sterujących należy stosować pełnią składnię. Można również odwoływać się do wartości pól w tabeli, na podstawie której formularz został utworzony, do wartości elementu sterującego podformularza lub podraportu i do wartości większości właściwości formularza, raportu lub elementu sterującego. Jeśli odwołanie dotyczy pola tabeli podstawowej otwartego raportu w raporcie musi być umieszczony element sterujący związany z tym polem lub bez musi występować odwołanie do tego pola w wyliczanym elemencie sterującym raportu. Uruchamianie makr Istnieją następujące możliwości uruchamiania makr: Bezpośrednio poprzez kliknięcie przycisku Uruchom! na karcie Projektu. Po naciśnięciu przycisku polecenia, o ile do jego zdarzenia Przy kliknięciu zostało przypisane makro. Po wystąpieniu zdarzenia, które jest skojarzone z makrem. Z poziomu języka VBA, o ile w kodzie programu tego języka została użyta metoda RunMacro obiektu DoCmd. Debugowanie makr Jeśli chodzi o kwestię sprawdzenia (poprawności) działania makra, to niekiedy może sprawiać trudność wykrycie usterki. Mogą tu być pomocne akcje PrzyBłędzie i obiekt MacroError, które są pomocne właśnie w debuggowaniu makr. Równie pomocne są następujące narzędzia: Pojedynczy krok znajduje się w grupie Narzędzia na wstążce Projektowanie polecenia Narzędzia makr. Jego klikniecie włącza makro w trybie wykonywania krok po kroku. Okienko Praca krokowa makra pozwala podejrzeć nazwę makra, warunek, nazwy akcji, argumentów i numeru błędu przed wykonaniem akcji Okno komunikatu jest akcją, która może być użyta w celu wyświetlenia wartości zmiennych, komunikatów błędów, ustawień kontrolnych i pewnych innych informacji o uruchomienie makra. ZatrzymajMakro jest akcją, która może być użyta do zatrzymania makra prze jego wykonaniem. W takim przypadku warto użyć to narzędzie wraz z oknem debuggowania w celu sprawdzenia obliczanych wartości w chwili wyłączania makra. Okno debuggowania jest używane do podglądania dowolnych wartości, zmiennych tymczasowych lub własciwości obiektu MacroError po zatrzymaniu makra. Wciśniecie klawiszy Ctrl+G powoduje, iż zostanie wyświetlone okno kodu po zatrzymania makra. Wówczas należy wpisać znak zapytania, a po nim zmienna lub wyrażenie, jakie ma być sprawdzone, po czym nacisnąć Enter. 5
Makra osadzone Każde makro osadzone: jest przechowywane we właściwościach zdarzenia i dlatego jest ono częścią obiektu, do którego jest przypisane, jeśli jest modyfikowane, to nie należy przejmować się innymi obiektami, które korzystają z niego, jest niezależne, nie jest widoczne w Okienku nawigacji, jest dostępne jedynie z poziomu okna Właściwości, jest makrem zaufanym oznacza to, iż jest uruchamiane, nawet jeśli poziom bezpieczeństwa zapobiega wykonywaniu kodu. Korzystanie z makr osadzonych pozwala na dystrybuowanie aplikacji bazodanowych jako programów zaufanych, gdyż są one automatycznie chronione przed wykonywaniem niebezpiecznych czynności. Uwaga. Dużą zmianą wprowadzoną w Microsoft Access 2007 było to, iż podczas tworzenia przycisku polecenia za pomocą kreatora, w miejsce tworzonej dotychczas procedury zdarzenia, tj. procedury języka VBA, jest tworzone makro osadzone. Zalety makr osadzonych Wykorzystywanie makr zamiast procedur języka VBA jest korzystne z kilku powodów: Jeśli przycisk polecenia zostanie skopiowany i wklejony do innego formularza, to makro osadzone jest przenoszone jednocześnie wraz ze skopiowanym przyciskiem. A zatem nie ma potrzeby dodatkowego kopiowania i wklejania kodu. Jeśli przycisk polecenia jest wycięty i zostanie wklejony do tego samego formularza (np. do innej zakładki), nie ma potrzeby ponownie dołączać do niego kodu procedury. Makra osadzone od wersji Microsoft Access 2007 mają jeszcze inne zalety w stosunku do makr z wersji poprzednich Accessa. A mianowicie, przy imporcie formularza lub raportu z innej bazy, ich makra osadzone są automatycznie przenoszone wraz z nimi Makra a procedury języka VBA Istnieją jednak przypadki zadań, dla których lepszym narzędziem w porównaniu do makr, jeśli chodzi o ich realizację, będzie język VBA. Przykładowo można by tu wymienić: tworzenie i wykorzystanie własnych funkcji użytkownik może tworzyć własne funkcje w kodzie języka VBA, a nie tylko wykorzystywać te wbudowane, jednoczesna praca z wieloma rekordami jeśli zachodzi np. potrzeba przeniesienia wartości rekordu do zmiennej, by nią później manipulować, tworzenie lub modyfikowanie obiektów oczywiście w większości przypadków, najłatwiejszym rozwiązaniem, jeśli chodzi o tworzenie i modyfikowanie obiektów jest wykorzystanie widoku Projekt. Jednak w niektórych sytuacjach może zajść konieczność zmiany definicji obiektu przy użyciu kodu języka VBA. Język VBA oferuje możliwość manipulowania praktycznie dowolnymi obiektami w bazie danych, w tym samą bazą danych, wyświetlanie paska postępu na pasku stanu, wykorzystywanie funkcji zapisanych w zewnętrznych bibliotekach DLL za pomocą makr w ogóle nie jest możliwe odwołanie się do funkcji zawartych w bibliotekach dynamicznych DLL, 6
komunikacja z innymi aplikacjami Windows lub uruchamianie akcji na poziomie systemowym przykładowo można użyć kodu języka VBA w celu nawiązania komunikacji z Excelem w celu przesłania danych do arkusza kalkulacyjnego, jak również z danych z arkusza kalkulacyjnego do bazy. Konwersja istniejących makr na kod języka VBA Po zaznajomieniu się ze składnią języka VBA, może zaistnieć potrzeba, aby niektóre z makr zastąpić kodem tego języka. Nie jest jednak możliwe skopiowanie makra z okna makr do procedury języka VBA. Makra posiadają swoją specyficzną składnię i w związku z tym, po jej przeanalizowaniu, dla każdego warunku, akcji i argumentu akcji użytych w makrze, należy napisać ekwiwalenty fragment kodu w procedurze języka VBA. Jednak istnieje Microsoft Access możliwość automatycznej konwersji makra na kod języka VBA. A mianowicie, jeśli plik makra jest podświetlony w oknie makr w oknie bazy danych, można skorzystać z opcji w oknie Zapisz jako Moduł: 1. Należy zaznaczyć w Okienku nawigacji w Makrach, nazwę makra, które ma być przekonwertowane na procedurę języka VBA. 2. Z menu Plik, należy wybrać polecenie Zapisz obiekt jako Moduł. 3. Konwertowanemu makru zostanie domyślnie przypisana nazwa domyślna, która jest kopią nazwy makra i zaczyna się do słowa Kopia. 4. Po wybraniu przycisku OK, ukaże się okienko dialogowe Konwertuj makro. 5. Jak widać, można wybrać opcje dołączające obsługę błędów i komentarze makra, po czym należy kliknąć Konwertuj. 6. W Okienku nawigacji zostanie wyświetlony nowy Moduł, któremu domyślnie zostanie nadana nazwa Przekonwertowane makro (i tu nazwa makra). 7