Moduły w SZBD MS Access służą do rozszerzenia możliwości systemu zarządzania bazami danych MS Access o procedury i funkcje (procedury funkcyjne) zdefiniowane przez projektanta bazy danych, których nie przewidzieli projektanci SZBD.
Pisanie modułów wymaga znajomości języka VBA (Visual Basic for Applications). Jest to język komputerowy, który pozwala na pisanie programów będących rozszerzeniem aplikacji pakietu biurowego MS Office, w szczególności edytora tekstu Word, arkusza kalkulacyjnego Excel, SZBD Access. Język VBA jest podzbiorem języka Visual Basic posiadającym następujące cechy:
służy do powiązania obiektów bazy danych w jedną, spójną aplikację- zawiera standardowe konstrukcje programistyczne, jak
IF..THEN..ELSE
,FOR
,
CASE
, procedury, zmienne
Stosuje się dwa typy procedur:
- funkcje (procedury funkcyjne (
function
)) - zwraca wartość, może być używana w wyrażeniach, np.year(date)
zwraca rok pobrany z daty - procedury (podprogramy (
sub
)) - mogą występować jako procedury zdarzeń (zdarzeniem może być np. kliknięcie na przycisku) w formularzach i zdarzeniach
Moduł jest zbiorem deklaracji i definicji procedur i funkcji języka VBA przechowywanych razem jako całość. W SZBD MS Access występują dwa rodzaje modułów:
- Moduły (zwane modułami standardardowymi)
- Moduły klas
Kod VBA, czyli procedury i funkcje umieszczone w module standardowym są dostępne z każdego poziomu bazy danych Access. Moduły klasy natomiast zawierają procedury lub funkcje związane z określonym obiektem, np. formularzem, raportem, kwerendą, dla którego zostały zaprojektowane.
Funkcjonalność modułu klasy opiera się najczęściej na wykonaniu zawartego w nim kodu w odpowiedzi na dane zdarzenie. W środowisku VBA można wyróżnić także procedury typu public
(publiczne), które mogą być wywoływane w dowolnym miejscu aplikacji (jest to opcja domyślna). Procedury prywatne (private
) zaś są elementem danego modułu i nie mogą być wywołane poza nim. Wszystkie procedury zdarzeń są prywatne.
Podobnie jak w innych językach programowania, w VBA można definiować typy zmiennych i stałych. Można tu wyróżnić następujące typy zmiennych:
- typy lokalne dla procedury, deklarowane w procedurze po słowie
Dim
- typy lokalne dla modułu
, dostępne we wszystkich procedurach i funkcjach, deklarowane po słowie kluczowym
Private
- typy globalne, deklarowane po słowie kluczowym
Public
, dostępne we wszystkich modułach aplikacji
W języku VBA wykorzystuje się zdeklarowane typy danych, m.in.:
Access | VBA | Domyślnie |
---|---|---|
Text | String | "" |
Number | Bool, Integer, Long, Double, Single | 0 |
Currency | Currency | 0 |
Yes/No | Boolean | False |
Date/Time | Date | 1899-12-30 |
* Specjalny tryb danych VBA - Variant
- oznacza dowolny typ wartości.
W języku VBA wykorzystujemy najczęściej procedury zdarzeniowe, które są wykorzystywane po zaistnieniu jakiegoś zdarzenia w interfejsie użytkownika, np. naciśnięcie przycisku na formularzu, zmiana wartości w polu tekstowym formularza, otwarcie/zamknięcie formularza, drukowanie raportu, początkowe otwarcie bazy danych itp.
Każda powtarzająca się rutynowa czynność, w szczególności każda, którą można wykonać za pomocą opcji znajdujących się we wbudowanym menu, nadaje się do zautomatyzowania za pomocą procedury. Na przykład w formularzu można umieścić zbiór przycisków, po których naciśnięciu użytkownik zyskuje wyświetlenie tekstu pomocy, wyświetlenie innego formularza, zamknięcie danego formularza.
W Accessie dostępny jest edytor kody Visual Basic Editor, zawierający środowisko uruchomienia kody VBA. Podczas pisania kodu wygodnie jest uruchomić okno analizy programu (Immediate Window) przez wciśnięcie kombinacji klawiszy CTRL+G lub z górnego menu edytora VBA wybieramy View/Intermediate Window - daje to możliwość wykonania kodu, czyli sprawdzenia funkcjonowania redagowanych procedur lub funkcji.
Podczas pisania długich procedur/funkcji istnieje możliwość przerwania działania funkcji bądź procedury przez ustawienie w kodzie punktu przerwania: Debug/Toggle breakpoint (F9).
Podczas redagowania kodu VBA wygodnie jest uruchomić:
- nawigator po klasach bieżącego projektu (View/Project Explorer)
- nawigator po zarejestrowanych bibliotekach (View/Object Browser)
Function SquareRoot (X As Double) As Double Dim Msg As String Select Case Sgn(X) 'Oblicz znak argumentu Case 1 SquareRoot = Sqr(X) Exit Function Case 0 Msg = "Przekazana wartość to 0." Case -1 Msg = "Niedozwolona liczba." End Select MsgBox Msg End Function
Function Otwarty(ByVal NazwaFormularza As String) As Integer Dim I As Integer Otwarty = False For I=0 to Forms.Count-1 If Forms(I).Name = NazwaFormularza Then Otwarty=True Exit For End If Next I End Function