6. Budowanie aplikacji
Etapy budowania aplikacji:
- Definiowanie struktury danych:
- definiowanie tablic (struktura, typy danych, klucz główny, ograniczenia,
indeksy);
- określenie relacji (więzów integralności);
- wprowadzenie danych testowych
- Wykonanie formularzy:
- zaprojektowanie zapytania na ktorym będzie oparty formularz;
- wykonanie graficznego układu formularza;
- dodatkowe oprogramowanie formularza.
- Wykonanie raportów:
- zaprojektowanie zapytania dla raportu;
- wykonanie graficznego układu raportu;
- określenie sortowania i grupowania;
- dodatkowe oprogramowanie raportu.
- Wykonanie formularzy i sekcji sterujących (przyciski).
- Dodatkowe oprogramowanie aplikacji.
Większość
etapów można przyspieszyć wykorzystując kreatory, a potem dopracowując utworzone
obiekty.
6.1 Wykonanie formularza
Tworzenie formularza
- zdefiniowanie zapytania
- użycie kreatora formularzy
- modyfikacja typów pól i wyglądu formularza
- modyfikacja własności formularza i pól
- utworzenie przycisków funkcyjnych (z użyciem kreatora
formantów)
- oprogramowanie zdarzeń formularza
Dostępne obiekty na
formularzach:
- etykiety
- pola tekstowe
- linie itp.
- grupy opcji i przycisków
- pola kombi, listy, wyboru
- obiekty OLE stałe, powiązane
- podformularze
- wykresy
- Inne: kalendarz itp.
Najważniejsze własności:
- formularza
- Dane: źródło rekordów
- Wygląd: widok domyślny
- Inne: edycja dozwolona, usuwanie dozwolone, dodawanie dozwolone,
modalny
- pól
- Dane: źródło formantu (może być wyrażenie - obliczenia
automatyczne), wartość domyślna, reguła poprawności, komunikat o
błędzie
- Wygląd: widoczny,kiedy wyświetlać,własności określające czcionkę,
justowanie, kolory i
obramowanie
- Inne: nazwa,indeks kolejności dostępu, zatrzymanie przechodzenia
6.2 Wykonanie
raportu
Tworzenie raportu
- zdefiniowanie zapytania
- użycie kreatora raportów
- utworzenie/modyfikacja grupowania i sortowania
- modyfikacja wyglądu raportu
- modyfikacja własności raportu i pól
- oprogramowanie zdarzeń raportu
Części raportu:
- nagłówek i stopka raportu
- nagłówek i stopka strony
- nagłówek i stopka grupy
Grupy i sortowanie:
- dane podzielone wg hierarchii grup
- sortowanie określone w ramach każdej grupy (nie obowiązuje sortowanie z
zapytania!)
Najważniejsze własności:
- raportu
- Dane: źródło rekordów
- Wygląd: stopka strony, nagłówek strony (określa, czy
nagłówki na wszystkich stronach)
- sekcji
- Wygląd: wymuszaj nową strone, nowy wiersz lub kolumna, trzymaj razem,
można pomniejszać, można zmniejszać
- pól
- Dane: źródło rekordów (może być wyrażenie - obliczenia
automatyczne), format, suma bieżąca
- Wygląd: ukryj duplikaty, można pomniejszać, można powiększać,
własności określające czcionkę, justowanie, kolory i obramowanie
- Inne: nazwa
Możliwości formatowania raportu:
- wydruk wielokolumnowy (np. etykiety)
- zmiana strony/kolumny przed/po grupie, utrzymywanie grupy razem
- pola sumacyjne (np. do numerowania pozycji)
- pola bez powtórzeń
- pola rozciągliwe"
Inne możliwości raportów:
- zastosowanie podraportów (subreports)
- eksport w formacie RTF (tylko raporty bez podraportów)
- przesyłanie pocztą MS Mail i faksem
- umieszczanie grafiki na raportach i formularzach:
- elementy stałe
- rysunki z bazy
- wykresy MS Graph
6.3 Moduły i Visual Basic for
Applications
Zastosowanie
- oprogramowanie zdarzeń
- nietypowe przetwarzanie danych
- przetwarzanie transakcyjne" danych
Składnia
- kod podzielony na moduły
- obsługa formularza w module zawartym w tym formularzu
- częściowa obiektowość: predefiniowane klasy do obsługi obiektów Accessa
Przykład 1: Przetwarzanie transakcyjne
Funkcja wykonuje ciąg zapytań o zmianę danych a następnie pozwala wszystkie
zmiany zatwierdzić lub odrzucić.
Function ChangeTitle
Const
MB_ICONQUESTION = 32
Const YES =
6
Const YES_NO = 4
Dim CRLF As String, EmployeeName
As String
Dim Message As String,
Prompt As String
Dim MyWorkspace
As Workspace, MyDatabase As Database, MyTable As Recordset
CRLF = Chr$(13) & Chr$(10)
Prompt = "Change title to Account
Executive?"
Set MyWorkspace =
DBEngine.Workspaces(0)
' Get default workspace.
Set
MyDatabase = MyWorkspace.Databases(0)
' Get current database.
Set
MyTable = MyDatabase.OpenRecordset("Employees", DB_OPEN_TABLE)
' Open table.
MyWorkspace.BeginTrans ' Start of transaction.
Do Until MyTable.EOF
If MyTable![Title] = "Sales Representative" Then
EmployeeName = MyTable![Last Name] & ", " & MyTable![First Name]
Message = "Employee: " & EmployeeName & CRLF & CRLF
If MsgBox(Message & Prompt, MB_ICONQUESTION & YES_NO, "Change Job
Title") = YES Then
MyTable.Edit ' Enable editing.
MyTable![Title] = "Account Executive"
' Change job title.
MyTable.Update ' Save changes.
End If
End If
MyTable.MoveNext ' Move to next
record.
Loop
If MsgBox("Save all changes?",
MB_ICONQUESTION + YES_NO, "Save Changes") = YES Then
MyWorkspace.CommitTrans ' Commit changes.
Else
MyWorkspace.Rollback ' Undo changes.
End If
MyTable.Close
' Close table.
End Function
Pokazano:
- składnię użycia obiektów
- sposób obsługi transakcji"
- przetwarzanie recordset-ów
Przykład 2: Obsługa pól na
formularzu
Procedura obsługi zdarzenia OnCurrent powoduje, że jeśli pracownik ma wpisaną
datę zwolnienia, to jego dane nie mogą być
zmienione.
Sub Form_Current ()
On Error Resume Next
' konieczne - nie wszystkie pola mają własność Enabled!
Dim i As Integer
Dim f As Form
Set f = Forms![Pracownicy]
For i =
1 To Me.Count
f(i).locked = Not
IsNull(Me![Data zwolnienia])
Next i
End Sub
Pokazano:
- celowe ignorowanie błędów
- sposoby odwołania do formularza: Forms![nazwa], Me;
- istnieje jeszcze sposób: Screen.ActiveForm
- sposób odwołania do pola na formularzu: f![nazwa pola], f(i)
- obsługę przez wykorzystanie kolekcji: domyślną kolekcją formularza
jest kolekcja jego wszystkich pól
Inne ciekawe możliwości języka:
- wykonywanie akcji i wywoływanie poleceń z menu
- obsługa DDE
- sterowanie innymi aplikacjami przez OLE2
- wykorzystanie bibliotek DLL
- prosta grafika na raportach
- kolekcje
- manipulowanie obiektami na formularzach, raportach itp.
- definiowanie tablic, indeksów, zapytań itd.