Access - zti.polsl.pl
Transkrypt
Access - zti.polsl.pl
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 blokach. Wyróżniane są dwa rodzaje blokó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 bloki są blokami 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 blok_1 Else blok_else End if Pętle Instrukcje te pozwalają na kilkukrotne wykonywanie tego samego bloku instrukcji. 1. DO ... LOOP – liczba powtórzeń pętli uzależniona jest od spełnienia warunku. a) Do Until warunek blok Loop c) Do While warunek blok Loop b) Do blok Loop Until warunek d) Do blok Loop 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, blokada) 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 blokowania 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 Loop 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 Loop 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