Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak
Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I MODUŁY W języku Access Basic kod pisze się w tak zwanych ach. Wyróżniane są dwa rodzaje ów: funkcje globalne (publiczne) lub dedykowane jednemu z obiektów (prywatne), procedury globalne, dedykowane jednemu z obiektów lub procedury zdarzeń (dołączane do formularza lub raportu) uruchamiane w momencie wystąpienia zdarzenia. Procedury przechowywane są w modułach globalnych lub modułach formularzy i raportów. Moduły globalne stanowią oddzielne obiekty bazy danych i procedury w nich występujące mogą być wywoływane z innych modułów. Natomiast pozostałe moduły tworzone są automatycznie z formularzami lub raportami i ich i są ami prywatnymi niewidzianymi poza obiektami, do których należą. Postać procedury: Postać funkcji: Sub nazwa ( parametry ) Function nazwa ( parametry) [as typ] instrukcja 1 instrukcja 1...... instrukcja n instrukcja n End Sub End Function Przekazywanie parametrów do funkcji [ ByVal ] nazwazmiennej [As typ] ByVal zmienna jest przekazywana przez wartość tzn. zmiany dokonywane na niej w procedurze lub funkcji nie będą widoczne poza nią, As typ można podać typ zmiennej przekazywanej jako parametr. W wywołaniu funkcji parametry muszą być przekazywane w nawiasach. W przypadku procedury parametry przekazuje się bez nawiasów. Przykład procedura1 par1, par2 funkcja1 (par1, par2) 2
Deklaracje zmiennych Dim nazwazmiennej [ As typ ] przeciętna deklaracja zmiennej Static nazwazmiennej [ As typ ] ten sposób deklaracji zmiennej gwarantuje, że zmienna zachowuje wartość nawet po zakończeniu działania funkcji Global nazwazmiennej [ As typ ] zmienne globalne widziane z każdego modułu. Deklaracje takie można wykonywać tylko w modułach globalnych w sekcji deklaracji. STEROWANIE PRZEPŁYWEM PROGRAMU Struktury decyzyjne Są to struktury pozwalające na warunkowe wykonywanie fragmentu kodu. Należy m.in. do nich: If warunek_1 Then _1 Else _else End if Pętle Instrukcje te pozwalają na kilkukrotne wykonywanie tego samego u instrukcji. 1. DO... LOOP liczba powtórzeń pętli uzależniona jest od spełnienia warunku. a) Do Until warunek b) Do Until warunek c) Do While warunek d) Do While warunek OBIEKTY I KOLEKCJE W systemie MS Access istnieje hierarchia obiektów, ponadto każdy rodzaj obiektu zgrupowany jest w tak zwane kolekcje. 3
Przykład elementy sterujące formularza należą do obiektu Formularz pola tabeli należą do obiektu Tabela kolekcja Forms stanowi zbiór wszystkich otwartych formularzy Odwołując się do elementu kolekcji identyfikuje się go jako jej element: identyfikator![nazwa_obiektu] identyfikator("nazwa_obiektu") identyfikator(wskaźnik) gdzie: identyfikator stanowi nazwę kolekcji, do której należy obiekt o nazwie nazwa_obiektu identyfikator(wskaźnik) wykorzystywany jest w przypadku, kiedy operujemy na wszystkich elementach kolekcji np. nadając im w pętli pewną własność. Przykład jeśli posiadamy formularz Pracownik, to odwołanie do niego może wyglądać w następujący sposób: Forms![Pracownik], Forms("Pracownik"), For i = 0 To Forms.Count 1 Forms(i).Caption = Tytul Next Każda kolekcja ma własność "Liczba" (Count), której przypisywana jest liczba obiektów należących do kolekcji. Własność ta wykorzystana została w przykładzie powyżej. Zmienne obiektowe W języku Access Basic poza normalnymi zmiennymi można deklarować tak zwane zmienne obiektowe, które odpowiadają typom obiektów składających się na bazą danych. Deklaracja odbywa się również za pomocą instrukcji Dim i Global. Kojarzenie tych zmiennych z obiektami odbywa się za pomocą instrukcji SET nazwazmiennej = wyrazenie_obiektowe Przykład Dim Formularz As Form 4
Set Formularz = Forms![Pracownik] METODY ZWIĄZANE Z OBIEKTAMI Typy metod Zwracające wartość Wykonujące działanie Obiekt.metoda [ [ ( ] lista argumentów [ ) ] ] ( ) - odnoszą się do metod zwracających wartość PRACA Z ZESTAWAMI REKORDÓW Do manipulowania danymi w bazie danych wykorzystuje się typ RECORDSET zestaw rekordów. Istnieją m.in. dwa typy zestawu rekordów: Recordset (typu tabela) jest to reprezentacja tabeli bazowej stosowana do dodawania, zmiany lub usuwania rekordów z pojedynczej tabeli bazy danych Recordset (typu dynamicznego) jest to zestaw zawierający wynik zapytania opartego na jednej lub kilku tabelach bazowych. W zestawie tym można dodawać, zmieniać lub usuwać rekordy. Ponadto, rekordy w tabelach bazowych dodawane, usuwane lub poddawane edycji przez innych użytkowników również pojawiają się w danym obiekcie Recordset. Do tworzenia nowych obiektów typu Recordset wykorzystywana jest metoda OpenRecordset. Set zestaw_rekordów = obiekt.openrecordset (źródło, typ, opcje, ada) Zestaw_rekordów jest to zmienna obiektowa reprezentująca tworzony obiekt Recordset, Obiekt jest to zmienna obiektowa reprezentująca istniejący obiekt, z którego ma zostać utworzony nowy obiekt Recordset, Źródło jest to wartość typu String określająca źródło rekordów dla nowego zestawu Recordset. Źródło to może być nazwą tabeli, nazwą kwerendy lub instrukcji SQL, która zwraca rekordy. Typ element nieobowiązkowy. Stała wskazująca typ otwieranego obiektu Recordset Opcje kombinacja stałych charakteryzujących nowy obiekt Recordset Blokada element nieobowiązkowy. Stała określająca sposób owania obiektu Recordset. Przykład utwórz zbiór rekordów oparty na zapytaniu SELECT * FROM pracownik 5
Dim mzb as RecordSet Dim zapytanie as String Zapytanie = "SELECT * FROM Pracownik" Set mzb = CurrentDb.OpenRecordSet(Zapytanie) CurrentDB bieżąca baza danych Tworzenie rekordów na podstawie formularza Nowy obiekt typu RecordSet może powstać również jako działanie metody RecordSetClone. Metodę tę stosuje się do otwartego formularza, zawierającego rekordy. Efektem jej działania jest umieszczenie tych rekordów w zmiennej typu RecordSet. Set zestaw_rekordów = formularz.recordsetclone Set mzb = Forms![Pracownik].RecordSetClone PĘTLE W ZESTAWACH REKORDOW MOVE metoda pozwalająca na sekwencyjne poruszanie się po wszystkich rekordach. Początek lub koniec zbioru wykrywa się badając własności zbioru BOF i EOF. Metoda ta ma następujące wystąpienia: MoveFirst, MoveLast, MoveNext, MovePrevious, Move row, [start] Przykład wyświetl zawartość pola nrz każdego rekordu zbioru mzb Deklaracje jak powyżej Mzb.MoveFirst Do Until mzb.eof Debug.Print mzb!nrz Mzb.MoveNext FIND metoda, poruszania się po rekordach, związana z wyszukiwaniem. O sukcesie poszukiwań informuje własność zbioru NoMatch. Jeżeli rekord spełniający odpowiednie kryterium nie zostanie znaleziony, własność ta ustawiana jest na True. Metodę wykorzystuje się w postaci: FindFirst, FindLast, FindNext, FindPrevious 6
Przykład zliczyć liczbę rekordów, które w polu nazwisko mają wartość Kowalski Deklaracje jak powyżej Dim kryterium as string, Licznik as integer Kryterium = "Nazwisko = 'Kowalski'" Mzb.FindFirst Kryterium Do Until mzb.nomatch Licznik = Licznik +1 Mzb.FindNext Kryterium ZAKŁADKA (Bookmark) ciąg znaków jednoznacznie identyfikujący bieżący rekord Przykład znajdź pierwszy rekord spełniający warunek nrz = 3. Jeżeli nie ma takiego rekordu, wróć do rekordu, który był rekordem bieżącym w momencie rozpoczęcia poszukiwań Deklaracje jak powyżej Dim zakładka as string Zakładka = mzb.bookmark Mzb.FindFirst "nrz = 3 If mzb.nomatch then Mzb.bookmark = zakładka End if Mzb.close 7