Visual Basic für Applikationen (VBA) 1. Einführung in Objektorientiertheit, Pogrammierung in...

Post on 05-Apr-2015

118 views 0 download

transcript

Visual Basic für Applikationen(VBA)

1. Einführung in Objektorientiertheit, Pogrammierung in Access und Zugriff auf Steuerelemente

2. Zugriff auf Datenelemente, Fehlerbehandlung, Startoptionen

Nils Ohlmeier, Joos-Hendrik Böse

Visual-Basic Einleitung

Entwicklung von Basic

Entwickelt 1963 am Dartmouth College als interpretierende Sprache zur anschaulichen Vermittlung von Programmierkonzepten.

1982 kommt mit QuickBASIC von Microsoft eine kompilierende völlig überarbeitet Version von Basic auf den Markt, die Unterprogramme und strukturierte Datentypen kannte.

Visual-Basic Einleitung

Heutiger Entwicklungsstand von Basic

Objektorientierte Entwicklungsumgebung zur Erstellung von Windows oder NT Programmen

Visual Basic 6.0 (VB) oder Visual Basic für Applikationen (VBA)

Einfacher Austausch von Objekten zwischen Microsoft-Anwendungen

Einfache Nutzung von Officefunktionen

Objektorientiertes Programmieren

Definition: Objekt

Ein Objekt ist die Zusammenfassung von Eigenschaften (Daten, Attributen) und zugehörigen Methoden (Elemenfunktionen).

Methoden (Funktionen)

Eigenschaften(Daten, Attribute)

Die Daten beschreiben den Zustand oder die Eigenschaften eines Objekts, die Methoden (Elementfunktionen) enthalten die Operationen zur Manipulation der Daten des Objekts.

Objektorientiertes Programmieren

Beispiel: Ein spezifischer Artikel

Objekt: Monitor

Methoden:

Gesamtumsatz anzeigen

Werte eingeben

Artikel verkaufenWareneingang

Eigenschaften

Artikelname: Monitor

Artikelnummer: 1

Verkaufspreis: 200

verkaufte Menge: 5

Lagerbestand: 0

Objektorientiertes Programmieren

Zugriff auf Objekte

Jedes Objekt besitzt einen eindeutigen Zustand, der durch die Werte der Objektvariablen bestimmt ist. Die Objektvariablen können nur durch die Methoden des Objekts verändert werden. Nach außen ist ein Objekt allein über seine Methoden sichtbar (Kapselung). Die Schnittstelle nach außen bilden die öffentlichen Methoden, über die Objekte miteinander kommunizieren bzw. Nachrichten austauschen.

Objektorientiertes Programmieren

Beispiel: Im Lager sind 5 Stck Monitore eingetroffen

Objekt: Lagerverwalter

Zielobjekt Methode Parameter

Monitor Wareneingang 5

Objekt: Monitor

Methoden:

Gesamtumsatz anzeigen

Werte eingeben

Artikel verkaufen

Wareneingang

Eigenschaften

Artikelname: Monitor

Artikelnummer: 1

Verkaufspreis: 200

verkaufte Menge: 5

Lagerbestand: 0

Objektorientiertes Programmieren

KlassenGleichartige Objekte haben gemeinsame Elemente, d.h. gemeinsame Methoden und gemeinsame Objektvariablen. Ihnen liegt der gleiche Bauplan zugrunde, der als Vorlage für die Generierung dieser gleichartigen Objekte dient. Dieser Bauplan wird Klasse genannt. Eine Klasse definiert die Struktur ihrer Objekte. Die Objekte werden auch Instanzen ihrer Klasse genannt.

Objektorientiertes Programmieren

Objekt: Monitor

Eigenschaften

Artikelname: Monitor Artikelnummer: 1 Verkaufspreis: 200 verkaufte Menge: 5 Lagerbestand: 0

Methoden:

Gesamtumsatz anzeigen Werte eingeben Artikel verkaufen Wareneingang

Objekt: CPU

Eigenschaften

Artikelname: CPU Artikelnummer: 3 Verkaufspreis: 400 verkaufte Menge: 12 Lagerbestand: 3

Methoden:

Gesamtumsatz anzeigen Werte eingeben Artikel verkaufen Wareneingang

Klasse Artikel

Eigenschaften

Artikelname Artikelnummer Verkaufspreis verkaufte Menge Lagerbestand

Methoden:

Gesamtumsatz anzeigen Werte eingeben Artikel verkaufen Wareneingang

Applikation

DBEngine

Forms

Reports

DoCmd

Screen

Errors

Workspaces

DatabasesTableDefs

Indexes Fields

QueryDefsParameters Fields

RecordSetsFields

RelationsFields

ContainersDocuments

ConnectionsQueryDefs

Recordsets

UsersGroups

GroupsUsers

Access-Objekthierarchie

Programmieren in Access

Eigenständige Module

Klassenmodule (Code behind Forms)

Module in Access

Für Code der in mehreren Formularen oder Berichten genutzt wird

Modul steht der ganzen Datenbank zur Verfügung (globales Modul)

Klassenmodule sind Bestandteil eines Formulars oder Berichtes, deshalb werden diese Module auch Code behind Forms genannt

Funktionen oder Prozeduren reagieren auf Ereignisse des Formulars oder Berichtes

Programmieren in Access

Modul

Prozedur 1

Funktion 2

Prozedur 3

Funktion 4

Module sind Sammlungen vonProzeduren oder Funktionen füreine bestimmte Datenstruktur.

Programmieren in Access

Erstellen eines eigenständigen Moduls über Einfügen

Programmieren in Access

Erstellen eines eigenständigen Moduls über Registrierkarte

Programmieren in Access

Erstellen eines Klassenmoduls für ein Formular

Formular auswählen und in Entwurfsansicht wechseln

Formelement auswählen und Eigenschaften anzeigen

Ereignis auswählen

Modulfenster öffnen

Gleiches Vorgehen um Klassenmodule zu bearbeiten

Programmieren in Access

Das Modulfenster

Liste der Steuerelemente, die in dem Formular existieren

Liste der schon programmiertenProzedurenListe der möglichen Ereignisse

Deklarationsteil, hier können Options gesetzt werden und Variablen Deklariert werden die im ganzen Modul gelten sollen.

Programmieren in Access

Einfügen von Prozeduren und Funktionen in ein Modul

Erscheint nur während eines geöffneten Modulfensters.

Um Funktionen in ein Modul einzufügen, welche z.B. von anderen Prozeduren benutzt werden sollen. Kann man den Dialog „Einfügen - Prozedur“ benutzten.

Man kann das Modul auch komplett von Hand editieren, ohne die Dialoge zu nutzen.

Programmieren in AccessDefinition von Sub-Prozeduren und Funktionen in VBA

Sub-Prozeduren[ Private | Public ] Sub Name [(ArgListe)]

[Anweisungen]

[Exit Sub]

[Anweisungen]

End Sub Funktionen[ Private | Public ] Funktion Name [(ArgListe)] [As Typ]

[Anweisungen]

[Exit Sub]

[Anweisungen]

End Sub

Private und Public beschreiben den Gültigkeitsbereich der Prozedur.Prozeduren sind Standardmäßig öffentlich, in CBF Prozeduren wird automatisch ein Privat vor die Prozedur gesetzt

Für den Gültigkeitsbereich gilt für Funktionen dasselbe

wie für Prozeduren.Es muß aber der

Rückgabetyp der Funktion deklariert werden.

Programmieren in Access

Definition von Sub-Prozeduren und Funktionen in VBA per Dialog

public | privat

Als statisch deklarierteVariablen behalten ihren Wert auch nach Abschlußder Prozedur

Programmieren in AccessDeklaration von Variablen in VBA

Explizite Variablendeklaration Implizite Variablendeklaration

Dim Name As Datentyp Dim -Anweisung nicht notwendig,Variablen werden durch ihre Verwendung direkt deklariert

Dim intFaktor As Integer intFaktor = intklein + 2

Programmieren in AccessDatentypen in VBA

Byte 0...255 1 ByteInteger -32.768 ... 32.767 2 BytesLong Integer -2.147.483.648 bis 4 Bytes

2.147.483.647Single Fließk. 8 Stellen 4 BytesDouble Fließk. 16 Stellen 8 BytesCurrency Festkomma 15 Vor 8 Bytes

4 NachkommastellenBoolean True / False 2 BytesDate 1.1.100 bis 8 Bytes

31.12.9999Object ObjektvariableString Text var. Länge 10 Bytes +Variant (mit Zahlen) Numerische Werte 16 BytesVariant (mit Zeichen) 22 Bytes +

Benutzerdefiniert(Type)

Programmieren in AccessVariablen in VBAVariablennamen sollten entsprechend der Reddick VBA Namenskonventionen vergeben werden, wobei die ersten drei Zeichen des Namens immer auf den Datentyp schließen lassen sollen.

Tag Object Typebool {f} Booleanbyte {byt} Bytecur Currencydate {dtm} Datedec Decimaldbl Doubleint Integerlng Longobj Objectsng Singlestr Stringstf String (fixed length)var Variant

Beispiel:Dim lngCount As LongDim intValue As IntegerDim strInput As String

Programmieren in Access

Deklaration von Konstanten in VBA

[Public | Privat] Const Name As Datentyp

Programmieren in Access

Ein und Ausgabedialoge

Die Funktion Eingabedialoge (InputBox) stellt ein Dialogfenster dar, und gibt den eingegebenen Wert zurück

Rückgabewert = InputBox (“Text“, “Titel“, Vorgabe)

Programmieren in Access

Ein und Ausgabedialoge

Private Sub Name_Click()Dim Name As String Name = InputBox("Gib sofort deinen Namen ein !!", "Eingabedialog", "Heinz")End Sub

Programmieren in Access

Ausgabedialog (MsgBox)

Rückgabewert=MsgBox(“Text“,Schaltflächen,“Titel“)

MsgBox “Text“, Schaltflächen, “Titel“

Private Sub Befehl10_Click()Dim Name As String Name = InputBox("Gib sofort deinen Namen ein !!", "Eingabedialog", "Heinz")

MsgBox "Hallo " & Name, vbOKonly , "Begrüßung"End Sub

Programmieren in Access

Ausgabedialog (MsgBox)

Programmieren in Access

Das DoCmd-Objekt

Mit Hilfe des DoCmd-Objekts können Access-Aktionen wie Öffnen und Schließen von Formularen und Berichten, Ändern des Maus-Coursers oder Setzen von Steuerelementen durchgeführt werden.

Syntax:

DoCmd.Aktionsname Argumente

Programmieren in Access

Das DoCmd-Objekt

Der Code-Editor schlägt bei Eingabe von DoCmd die existierenden Methoden vor.

Programmieren in Access

Das DoCmd-Objekt

Einige DoCmd-Methoden

DoCmd.Beep Piep !DoCmd.CancelEvent Die Methode bricht das

laufende Ereignis ab

DoCmd.OpenForm Formularname [,Ansicht] Ein Formular öffnenDoCmd.OpenReport Berichtsname [,Ansicht] Ein Bericht öffnenDoCmd.RunSQL SQL-Anweisung SQL-Befehl ausführen

DoCmd.OpenTable Tabellenname [,Ansicht] [,Datenmodus] Eine Tabelle öffnen

Programmieren in Access

Das Forms-Objekt

Das Forms-Objekt listet alle Formulare einer Datenbank auf und bietet Methoden an um deren Eigenschaften zu verändern.

Syntax

Forms!Form.Element.Eigenschaft

Innerhalb eines Formulars braucht man Objektebenen über dem Formular nicht angeben.

Syntax

Element.Eigenschaft

Programmieren in AccessEigenschaften von SteuerelementenFür Dokumentation von Eigenschaften in der Hilfe nachschlagen

Programmieren in Access

Einige Steuerelementeigenschaften

Allgemeine Eigenschaften

Visible Steuerelement sichtbarDisplayWhen Steuerelement wird angezeigt

am Bildschirm oder nur im Druck gezeigt

Eigenschaften von beschrifteten Steuerelemente

FontName Font der BeschriftungBorderWidth RahmenbreiteCaption Beschriftung des SteuerelementsForeColor Textfarbe

Objekt

Ereignis

Eigenschaft

Methode

Programmieren in AccessDer ObjektkatalogIm Objektkatalog sind alle verfügbaren Objekte, Methoden und Eigenschaften. Angezeigt wird er mit F2

Programmieren in Access

Das Reports-Objekt

Das Reports-Objekt listet alle Formulare einer Datenbank auf und bietet Methoden an um deren Eigenschaften zu verändern.

Syntax

Reports!Report.Element.Eigenschaft

Programmieren in AccessDer Focus

Um ein Steuerelement in den aktiven Zustand zu stellen (Focus), wird die Methode

Objektname.SetFocus

benutzt.

Die Eigenschaft Visible läßt sich bei einem aktiven Element nicht verändern

Programmieren in AccessDie wichtigsten Kontrollstrukturen in VBA

Die Auswahl

If Bedingung ThenAnweisungAnweisungEnd if

Die Fallauswahl

Select Case Selektor

Case Auswahlwert1 ...

Case Auswahlwertn ...

End Select

Die zählergesteuerte Wiederholung

For Zählervariable = Startwert To Endwert Step = SchrittweiteAnweisung1...Anweisung n

Next Zählvariable

Programmieren in AccessDie wichtigsten Kontrollstrukturen in VBA

Die bedingte Wiederholung

Do While / Until BedingungAnweisung 1...Anweisung n

Loop

Die bedingte Wiederholung

DoAnweisung 1...Anweisung n

Loop While / Until Bedingung

•Tabellen, Abfragen und Formulare erstellen•Datensätze hinzufügen, ändern, löschen, sortieren•Abfragen durchführen und Datensätze filtern

• Zugriff erfolgt durch die Objekthierarchie

Beispiel:

- DBEngine.Workspace(0).Database(0).TableDefs(“Student“)

Kurzschreibweise:

- DBEngine(0)(0)!Student

Zugriff auf Tabellen/Datensätze

Applikation

DBEngine

Forms

Reports

DoCmd

Screen

Errors

Workspaces

DatabasesTableDefs

Indexes Fields

QueryDefsParameters Fields

RecordSetsFields

RelationsFields

ContainersDocuments

ConnectionsQueryDefs

Recordsets

UsersGroups

GroupsUsers

Access-Objekthierarchie

• Tabelle erstellen

• Feld in Tabelle erstellen

• Feld an die Tabelle anhängen

• Tabelle anhängen

Tabelle.CreateField(“Beispiel“, dbInteger)

Datenbank.CreateTableDef(Tabellenname)

Tabelle.Fields.Append Feldname

Datenbank.TableDefs.Append Tabellenname

Zugriff auf Tabellen/Datensätze

• Tabelle öffnen

• Gesuchte Daten mit aktuellem Datensatz vergleichen

• Durch die Datensätze bewegen mit:•Tabelle.Move Zeilenanzahl•Tabelle.MoveNext•Tabelle.MovePrevious•Tabelle.MoveFirst•Tabelle.MoveLast

alle ohne Parameter

Zugriff auf Tabellen/Datensätze

•Tabelle.Index = “MNr“

•Tabelle.Seek “Vergleichsoperator“, “Suchzeichenkette“

• Bei Abfragen stehen•FindFirst•FindLast•FindNext•FindPrevious

zur Verfügung

mit Suchzeichenkette alsParameter

Zugriff auf Tabellen/Datensätze

Wird erleichtert durch: • Setzen von Haltepunkten• Schrittweise Ausführung• Variablenüberwachung• Prozeduraufrufe verfolgen

Grundsätzlich ist die kontextsensitive Hilfe [F1] zu empfehlen.

Fehlerbehandlung

Im Codeeditor bietet das Menu TESTEN Unterstützungbei der Fehlersuche

Fehlerbehandlung

Fehlerbehandlung

Mit diesen Befehlen kann man die Module von Hand kompilieren

• Vorteil: Man findet Fehler bevor die Prozeduren ausgeführt werden (was sonst nicht der Fall ist).

Fehlerbehandlung

Mit einem Haltepunkt erreicht man, daß die Ausführung der Prozedur unterbrochen wird, und der Codeeditor geöffnet wird.

Ab diesem Punkt kann man dann die Variablenüberwachungund die Einzelschrittausführung einsetzen.

Variablenüberprüfung

Einzelschrittausführung

• Unter EXTRAS - START können alle Optionen bezüglich der Datenbank eingestellt werden

Startoptionen

• Unter EXTRAS - ADD-INS - ÜBERSICHTS-MANAGER kann eine Tabelle „“Übersichtseinträge“ und ein Formular „Übersicht“ erstellt werden.

Startoptionen

• Kommandozeilenoptionen:

• /Excl Datenbank wird exklusiv geöffnet• /Ro Datenbank wird nur zum Lesen geöffnet• /X MAKRO Makro wird zu Beginn ausgeführt• /Runtime Es kann keine Entwurfsansicht geöffnet werden• /User NAME Benutzer wird automatisch angemeldet

Startoptionen