ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access -...

21
ADAT ©2005 Dipl. - Ing. Walter Sabin Seite: 1 Version 1.0a Einführung in Programmierung in Access - VBA

Transcript of ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access -...

Page 1: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

ADAT©2005 Dipl. - Ing. Walter Sabin

Seite: 1 Version 1.0a

Einführung in Programmierung in Access -

VBA

Page 2: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 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

Page 3: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 4: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

• ? .. print

• 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

Page 5: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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)

Page 6: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 7: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 8: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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 ":="

Page 9: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 10: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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)

Page 11: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 12: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 13: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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)

Page 14: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 15: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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"

Page 16: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 17: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 18: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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"

Page 19: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 20: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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

Page 21: ADAT©2005 Dipl. - Ing. Walter SabinSeite: 1 Version 1.0a Einführung in Programmierung in Access - VBA.

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