visual basic für applikationen (vba) 1. einführung in objektorientiertheit, pogrammierung in...
Post on 05-Apr-2015
119 Views
Preview:
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
top related