Upload
liese-rayman
View
116
Download
4
Embed Size (px)
Citation preview
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 1 Version 1.0a
Einführung in Programmierung in Access -
VBA
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 2 Version 1.0a
Grundsätzliches
• Automatisierung von Abläufen• VBA Visual Basic for Application
– nahezu identisch mit VB 6.0– wesentliche Unterschiede zu VB .net– Ereignis gesteuerte Programmierung
• 3 Komponenten– Entwicklungsumgebung
• Kein Macro Recorder• Viele Komfortfunktionen
– Sprache• Visual Basic ist leicht zu lernen• Viele Analogien zu anderen Programmiersprachen
– Objektmodell• Für jedes MS Office Modul ähnlich aber anders• VB - Hilfe verwenden
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 3 Version 1.0a
Entwicklungsumgebung
• Doppelclick auf Modul / Alt+F11• Project (Projektmanager)
– Access - Klassenobjekte (z.B. Formular)– Module (z.B.: ModHilf) - benutzererstellt– Klassenmodule
• Code Bereich - 1 Fenster je Modul– 2 Dropdown Boxen
(Objekte, Ereignisse / Prozeduren)– Einzel Prozedur / Gesamtmodulanzeige
• unterer linker Rand
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 4 Version 1.0a
Entwicklungsumgebung FS
• Eigenschaftenfenster– Name bzw. Formulareigenschaften bei Access -
Klassenobjekten• Direktfenster
– Ausgaben aus Modulen mit debug.print – Direkte Befehlseingabe
• Beispiel: Ausgabe von Datum und Zeit– Sub - Prozedurunterprogramm– Befehle: MsgBox, Strings, Verkettung, Variablen - definition,
eingebaute Konstante, Fortsetzungszeile– Strg+Leertaste - Code Completion– Funktion Msgbox aufrufen (ohne / mit Parametern in
Klammern)– debug.print - Ergebnis in Direktfenster– Parameterinfo - Toolbar "Bearbeiten"– Hilfe - F1
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 5 Version 1.0a
Entwicklungsumgebung FS 2
• VBA ist "case insensitiv" - automatische Anpassung der Schreibweise
• Variable können, müssen aber nicht deklariert werden (impliziter Typ: Variant)
• Kontextmenü -> Definition springt zur Definition der Variablen (oder Meldung)
• Syntaxfehler werden sofort erkannt• Ausführen von Prozedurunterprogrammen (
, F5)
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 6 Version 1.0a
Entwicklungsumgebung FS 3
• Testen– 2. Beispiel: Schleife– Auskommentieren: Zeichen: ' oder Toolbarfunktionen
(Bearbeiten)– Bearbeiten -> Suchen / Ersetzen– Haltepunkte– Toolbar Debuggen
• Einzelschritt, Prozedurschritt, Weiter, Abbrechen• Position verschieben• Codeänderungen vornehmen• Direktfensterüberprüfungen
– Überwachungsfenster• Menüfunktion: Überwachung hinzufügen
– Lokal - Fenster
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 7 Version 1.0a
Entwicklungsumgebung FS 4
• Auflistungen bearbeiten– Objekt - Katalog (F2)– Objekttypendeklaration
• statisch• dynamisch
– For Each ... Next zum Durchlaufen von Auflistungen
– "." und "!" Notation• "." bei Verweis auf eingebaute Unterobjekte• "!" bei Verweis auf Userdefinierte Objekte
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 8 Version 1.0a
Entwicklungsumgebung FS 4
• Konstante– Erste 2 Buchstaben - Verweis auf
Bibliothek• ac - Access z.B.: acTextBox als Controltyp• vb - Visual Basic z.B.: vbOkCancel• ad - ADO z.B. adAddNew
• Zuweisungen– Variable: "="– Objektreferenzen: "set"– Benannte Parameter ":="
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 9 Version 1.0a
Sprache
• Variable– Name 1. Buchstabe danach Alphanumerische
Zeichen oder "_"– Groß- und Kleinschreibung zur Lesbarkeit einsetzen
(z.B.: FehlerMeldung)– Automatische Deklaration und Initialisierung– Empfehlung: Am Beginn der Prozedur deklarieren.
Erzwingbar mit "Option Explicit" am Modulanfang– Definition mit:
• DIM• STATIC• PRIVATE• PUBLIC
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 10 Version 1.0a
Sprache FS
• Variablen FS– Beispiel: DIM i as Integer– Datentyp nach as:
• Byte, Boolean, Currency (15 Stellen vor und 4 Stellen nach dem Komma), Date (8 Byte), Decimal, Double, Integer (2 Byte), Long (4 Byte), Object, Single, String, Variant
– Kurzform• Integer: zahl%, Long: zahllang&, Currency: Betr@,
String: mystr$, Double: dz#– Array: dim sarr(3,2) as string, redim
sarr(5,4)– Definitionsort gibt scope an
• lokal (in Prozedur) - modul (in Deklarationen) - global (Public)
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 11 Version 1.0a
Sprache FS 2
• Konstante– Dezimalzahl (z.B.: 38) – Hexadezimalzahl (z.B.: &hF4)– Datum (z.B.: #1/1/2006#)– Definition mit const
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 12 Version 1.0a
Beispiel Bilder verwalten Bilder in Datenbank
• Tabellen - OLE Feld (z.B.: tblKunst)– Formularassistent erzeugt ein gebundenes
Objektfeld– nur BMP's direkt anzeigbar– für andere Formate wird ein OLE Server
benötigt• MS Photo Editor hat OLE Server• MS Picture Manager (Office 2003 nicht)
– Kompliziertes Einfügen• Kontext Menü -> Objekt einfügen -> aus Datei
erstellen -> Auswählen
– Viel Platz in Tabelle benötigt
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 13 Version 1.0a
Beispiel Bilder verwalten Bilder in Dateisystem
• Tabelle mit Textfeld für DateiPfad– Formular mit Assistent erzeugen– Bildsteuerelement hinzufügen– eigene Prozedur zum Anzeigen der Bilder– Aufruf der Prozedur bei Ereignissen:
• Beim Anzeigen des Formulars (Ereignisroutine: Current)
• Nach Eingabe (Nach Aktualisierung) des Dateinamens (Ereignisroutine: AfterUpdate)
• In Access Klassenmodul einfügen (sonst "Me" nicht verwendbar)
– Kommando Schaltfläche für Fileauswahl (Achtung: Verweise hinzufügen: Microsoft Office 11.0 Object Library)
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 14 Version 1.0a
Beispiel Bilder verwaltenBilder im Report
• Bild Steuerelement einfügen• Ereignisroutine für
beim Drucken "Detailbereich_Print" schreiben
• "Picture" Eigenschaft des Bildsteuerelementes auf Dateinamen aus Textfeld setzen
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 15 Version 1.0a
Sortieren im Formular
• Formulareigenschaft:"Sortiert nach" (Daten)auf Feld setzen (z.B.: [PLZ])(mehrere Felder durch "," trennen)
• Beim Start des Formulars:Schaltfläche "Filter/Sortierung anwenden" drücken
• Sortierung initialisiert das "RecordSet"
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 16 Version 1.0a
Sortieren im Formular Programmgesteuertes
Umsortieren• Tabelle tblKunden erstellen
(siehe Beispieldatenbank)• Formular frmKunden erstellen oder generieren.
– ev. in Ereignisroutine "Form_Load" die OrderByOn Eigenschaft auf "True" setzen.
• Kommandoschaltflächen für jede Sortierart ins Formular einfügen
• Ereignisroutine für "Click" Ereignis der Schaltfächen– Recordset von Formular holen– Primary Key Wert speichern– "OrderBy" Eigenschaft setzen– Im neuen Recordset zu gespeichertem Primary Key
navigieren
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 17 Version 1.0a
Mit Formulare Programmieren
Ereignisse bezogen auf Formular• Öffnen von Formularen
– DoCmd.OpenForm (siehe frmKunden in Beispieldatenbank)
• Ereignisse – unüberschaubare Menge– Formular - Ereignisreihenfolge:
• Öffnen Schließen• Beim Öffnen Beim Entladen• Beim Laden Beim Deaktivieren• Bei Größenänderung Beim Schließen• Beim Aktivieren• Beim Anzeigen
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 18 Version 1.0a
Mit Formulare Programmieren FS2
Ereignisse bezogen auf Daten• Bearbeiten von Datensätzen
– Beginnt vor der ersten Änderung eines Feldes– Endet mit der Speicherung des Datensatzes
• Ereignisreihenfolge:– Vor Eingabe (nur bei neuen Datensätzen)– Bei Geändert (Beim ersten Eingeben oder Löschen
eines Zeichens)– Vor Aktualisierung (Vor der Datensatzspeicherung)– Nach Aktualisierung– Nach Eingabe– Beim Anzeigen
• Abbruch falls möglich mit "Cancel = True"
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 19 Version 1.0a
Mit Formulare Programmieren FS3
Startformular• Start Formular
– Extras -> Start -> Formular / Seite anzeigen: Startformular eintragen
– Nodrwind Datenbank • Start -> Hauptübersicht• OpenForms Funktion als Ausdruck
aufgerufen (Modul Form_Hauptübersicht)• Fehlerbehandlung
– OnError goto ....– Resume .....– Labels
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 20 Version 1.0a
Mit Formulare Programmieren FS4
Bestellformular• Bestellungen
– Bestellungen Unterformular• Verknüpft über Bestellnr• Formularfuß
– Feld: BestellZwischensumme
– Feld: Zwischensumme• Berechnung aus Unterformular• gesperrt angezeigt
ADAT©2005 Dipl. - Ing. Walter Sabin
Seite: 21 Version 1.0a
Mit Formulare Programmieren FS5
Beziehungsarten• Einfache Tabelle, Abfrage oder 1:1 Beziehung
– Detailansicht oder Übersichtslisten– ev. mit "Lookup" Feldern
• Navigationsleiste und Bildlaufleisten erforderlich?– wenn nein:
Formateigenschaften ausblenden:Bildlaufleisten -> nein, Datensatzmarkierer -> nein, Navigationsschaltflächen -> nein, Trennlinie -> nein
• Schaltflächen OK und Abbrechen– Ok Verlässt Formula mit Speicherung– Abbrechen Verläßt ohne Speicherung