Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Visual Basic für Applikationen (VBA)

Ähnliche Präsentationen


Präsentation zum Thema: "Visual Basic für Applikationen (VBA)"—  Präsentation transkript:

1 Visual Basic für Applikationen (VBA)
Nils Ohlmeier, Joos-Hendrik Böse 1. Einführung in Objektorientiertheit, Pogrammierung in Access und Zugriff auf Steuerelemente 2. Zugriff auf Datenelemente, Fehlerbehandlung, Startoptionen

2 Visual-Basic Einleitung
Entwicklung von Basic Entwickelt 1963 am Dartmouth College als interpretierende Sprache zur anschaulichen Vermittlung von Programmierkonzepten. Basic wurde ursprünglich 1963 am Dartmouth College entwickelt. Basic war ursprünglich zur anschaulichen Vermittlung von Programmierkonzepten gedacht, wobei auf Schnelligkeit und Effektivität kein Wert gelegt wurde. Basic wurde als interpretierende Sprache entwickelt, womit sie sich nicht als Programmiersprache für wirklich leistungsfähige Programme eignetet. Mit QuickBasic wurde Basic zu einer „ernsthaften“ Programmiersprache. Bessere Grafik- und Audiofunktionen ließen QuickBasic zu etablierten Programmiersprachen wie C, Pascal und Fortran aufschließen. Der interprtierende Modus konnte in QuickBasic weiterhin zum Fehlersuchen benutzt werden. 1982 kommt mit QuickBASIC von Microsoft eine kompilierende völlig überarbeitet Version von Basic auf den Markt, die Unterprogramme und strukturierte Datentypen kannte.

3 Visual-Basic Einleitung
Heutiger Entwicklungsstand von Basic Visual Basic 6.0 (VB) oder Visual Basic für Applikationen (VBA) Objektorientierte Entwicklungsumgebung zur Erstellung von Windows oder NT Programmen Mit Visual Basic 6.0 steht dem Programmierer eine leistungsfähige Umgebung zur schnellen Erstellung von Windowsprogrammen zur Verfügung. VBA ist eine in die Office Komponenten integrierte Visual Basic Version, welche aber ab Office 97 stark an Visual Einfacher Austausch von Objekten zwischen Microsoft-Anwendungen Einfache Nutzung von Officefunktionen

4 Objektorientiertes Programmieren
Definition: Objekt Ein Objekt ist die Zusammenfassung von Eigenschaften (Daten, Attributen) und zugehörigen Methoden (Elemenfunktionen). Methoden (Funktionen) Eigenschaften (Daten, Attribute) Objekt z.B. Formular mit den Eigenschaften roter Hintergrund und grünem Text. Die Daten beschreiben den Zustand oder die Eigenschaften eines Objekts, die Methoden (Elementfunktionen) enthalten die Operationen zur Manipulation der Daten des Objekts.

5 Objektorientiertes Programmieren Beispiel: Ein spezifischer Artikel
Objekt: Monitor Methoden: Gesamtumsatz anzeigen Werte eingeben Artikel verkaufen Wareneingang Eigenschaften Artikelname: Monitor Artikelnummer: 1 Verkaufspreis: 200 verkaufte Menge: 5 Lagerbestand: 0

6 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.

7 Objektorientiertes Programmieren
Beispiel: Im Lager sind 5 Stck Monitore eingetroffen Objekt: Lagerverwalter Zielobjekt Methode Parameter Monitor Wareneingang Objekt: Monitor Methoden: Gesamtumsatz anzeigen Werte eingeben Artikel verkaufen Wareneingang Eigenschaften Artikelname: Monitor Artikelnummer: 1 Verkaufspreis: 200 verkaufte Menge: 5 Lagerbestand: 0

8 Objektorientiertes Programmieren
Klassen Gleichartige 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.

9 Objektorientiertes Programmieren
Methoden:  Gesamtumsatz anzeigen  Werte eingeben  Artikel verkaufen  Wareneingang Objekt: Monitor Objekt: CPU Eigenschaften  Artikelname: Monitor  Artikelnummer: 1  Verkaufspreis:  verkaufte Menge: 5  Lagerbestand: 0 Methoden:  Gesamtumsatz anzeigen  Werte eingeben  Artikel verkaufen  Wareneingang Eigenschaften  Artikelname: CPU  Artikelnummer: 3  Verkaufspreis:  verkaufte Menge:  Lagerbestand: 3 Klasse Artikel Methoden:  Gesamtumsatz anzeigen  Werte eingeben  Artikel verkaufen  Wareneingang Eigenschaften  Artikelname  Artikelnummer  Verkaufspreis  verkaufte Menge  Lagerbestand

10 Access-Objekthierarchie
Applikation DBEngine Workspaces Databases Connections TableDefs QueryDefs Indexes Fields QueryDefs Recordsets Parameters Fields RecordSets Fields Users Groups Relations Fields Groups Users Containers Documents Als Objekt wird in Visual Basic alles Bezeichnet, was programmiert und kontrolliert werden kann. Ein Objekt repräsentiert damit ein Element aus Access. Die Objekte sind hierarchisch in verschiedene Ebenen aufgeteilt. Die höchste Ebene ist das Application -Objekt. Es enthält als nächste Ebene die Datenbank (DBEngine), Formulare, Berichte und s.o. Ein Objekt kann selbst weitere Objekte enthalten, d.h. ein Formular kann Steuerelemente enthalten, die ihrerseits Objekte sind. Das angehängte „s“ bezeichnet eine Auflistung (Collection) von gleichartigen Objekten. Alle Abfragen sind bzw. in der Auflistung QueryDefs zusammengefaßt. Das DBEngine Objekt stellt die Access zugrundeliegende MS Jet Database Engine dar, es enthält Methoden, wie RepairDatabase, CompactDatabase. Im Workspace werden Datenbanken, Benutzer und Transaktionen verwaltet, wichtig sind die Workspace Objekte für Datenbankenzugriffe über ODBC und für das Sicherheitssystem. In jedem Workspace können mehrere Datenbanken geöffnet werden. TableDefs sind Tabellen, Relations sind Relationen, QueryDefs sind Abfragen, Recordsets ermöglichen den Zugriff auf Daten in Tabellen und Abfragen. Errors Forms Reports DoCmd Screen

11 Programmieren in Access
Module in Access Eigenständige Module Für Code der in mehreren Formularen oder Berichten genutzt wird Modul steht der ganzen Datenbank zur Verfügung (globales Modul) Klassenmodule (Code behind Forms) 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

12 Programmieren in Access
Module sind Sammlungen von Prozeduren oder Funktionen für eine bestimmte Datenstruktur. Modul Prozedur 1 Funktion 2 Prozedur 3 Funktion 4

13 Programmieren in Access
Erstellen eines eigenständigen Moduls über Einfügen

14 Programmieren in Access
Erstellen eines eigenständigen Moduls über Registrierkarte

15 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

16 Programmieren in Access
Liste der schon programmierten Prozeduren Liste der möglichen Ereignisse Das Modulfenster Liste der Steuerelemente, die in dem Formular existieren Option Compare Database legt die Sortierreihenfolge beim Vergleich von Zeichenketten fest. Option Explicit legt fest, das Variablen vor ihrer Verwendung deklariert werden müssen, Zeile kann gelöscht werden oder unter Extras Optionen ausgeschaltet werden. Deklarationsteil, hier können Options gesetzt werden und Variablen Deklariert werden die im ganzen Modul gelten sollen.

17 Programmieren in Access
Einfügen von Prozeduren und Funktionen in ein Modul 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. Erscheint nur während eines geöffneten Modulfensters.

18 Programmieren in Access
Definition von Sub-Prozeduren und Funktionen in VBA Sub-Prozeduren [ Private | Public ] Sub Name [(ArgListe)] [Anweisungen] [Exit Sub] 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 Funktionen [ Private | Public ] Funktion Name [(ArgListe)] [As Typ] [Anweisungen] [Exit Sub] End Sub Für den Gültigkeitsbereich gilt für Funktionen dasselbe wie für Prozeduren. Es muß aber der Rückgabetyp der Funktion deklariert werden.

19 Programmieren in Access
Definition von Sub-Prozeduren und Funktionen in VBA per Dialog public | privat Als statisch deklarierte Variablen behalten ihren Wert auch nach Abschluß der Prozedur

20 Programmieren in Access Deklaration 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

21 Programmieren in Access
Datentypen in VBA Byte Byte Integer Bytes Long Integer bis 4 Bytes Single Fließk. 8 Stellen 4 Bytes Double Fließk. 16 Stellen 8 Bytes Currency Festkomma 15 Vor 8 Bytes 4 Nachkommastellen Boolean True / False 2 Bytes Date bis 8 Bytes Object Objektvariable String Text var. Länge 10 Bytes + Variant (mit Zahlen) Numerische Werte 16 Bytes Variant (mit Zeichen) Bytes + Benutzerdefiniert(Type)

22 Programmieren in Access
Variablen in VBA Variablennamen 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 Type bool {f} Boolean byte {byt} Byte cur Currency date {dtm} Date dec Decimal dbl Double int Integer lng Long obj Object sng Single str String stf String (fixed length) var Variant Beispiel: Dim lngCount As Long Dim intValue As Integer Dim strInput As String

23 Programmieren in Access Deklaration von Konstanten in VBA
[Public | Privat] Const Name As Datentyp RVBA Konventionen für Konstantennamen Declarations section of a module should always have a scope keyword of Private or Public, and be prefixed by the scope prefixes m and g, respectively. A constant is indicated by appending the letter c to the end of the data type for the constant. For example: Const intcGray As Integer = 3 Private Const mdblcPi As Double =

24 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)

25 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

26 Programmieren in Access Ausgabedialog (MsgBox)
Rückgabewert=MsgBox(“Text“,Schaltflächen,“Titel“) MsgBox “Text“, Schaltflächen, “Titel“

27 Programmieren in Access Ausgabedialog (MsgBox)
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

28 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

29 Programmieren in Access
Das DoCmd-Objekt Der Code-Editor schlägt bei Eingabe von DoCmd die existierenden Methoden vor.

30 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 öffnen DoCmd.OpenReport Berichtsname [,Ansicht] Ein Bericht öffnen DoCmd.RunSQL SQL-Anweisung SQL-Befehl ausführen DoCmd.OpenTable Tabellenname [,Ansicht] [,Datenmodus] Eine Tabelle öffnen Ansicht: acNormal = Formularansicht acDesign = Entwurfsansicht acPreview = Seitenansicht acFormDS = Datenblattansicht

31 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

32 Programmieren in Access Eigenschaften von Steuerelementen
Für Dokumentation von Eigenschaften in der Hilfe nachschlagen

33 Programmieren in Access Einige Steuerelementeigenschaften
Allgemeine Eigenschaften Visible Steuerelement sichtbar DisplayWhen Steuerelement wird angezeigt am Bildschirm oder nur im Druck gezeigt Eigenschaften von beschrifteten Steuerelemente FontName Font der Beschriftung BorderWidth Rahmenbreite Caption Beschriftung des Steuerelements ForeColor Textfarbe

34 Programmieren in Access
Der Objektkatalog Im Objektkatalog sind alle verfügbaren Objekte, Methoden und Eigenschaften. Angezeigt wird er mit F2 Ereignis Eigenschaft Objekt Methode

35 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

36 Programmieren in Access
Der 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

37 Programmieren in Access
Die wichtigsten Kontrollstrukturen in VBA Die Auswahl If Bedingung Then Anweisung End if Die Fallauswahl Select Case Selektor Case Auswahlwert1 ... Case Auswahlwertn ... End Select Die zählergesteuerte Wiederholung For Zählervariable = Startwert To Endwert Step = Schrittweite Anweisung1 ... Anweisung n Next Zählvariable

38 Programmieren in Access
Die wichtigsten Kontrollstrukturen in VBA Die bedingte Wiederholung Do Anweisung 1 ... Anweisung n Loop While / Until Bedingung Die bedingte Wiederholung Do While / Until Bedingung Anweisung 1 ... Anweisung n Loop

39 Zugriff auf Tabellen/Datensätze
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

40 Access-Objekthierarchie
Applikation DBEngine Workspaces Databases Connections TableDefs QueryDefs Indexes Fields QueryDefs Recordsets Parameters Fields RecordSets Fields Users Groups Relations Fields Groups Users Containers Documents Als Objekt wird in Visual Basic alles Bezeichnet, was programmiert und kontrolliert werden kann. Ein Objekt repräsentiert damit ein Element aus Access. Die Objekte sind hierarchisch in verschiedene Ebenen aufgeteilt. Die höchste Ebene ist das Application -Objekt. Es enthält als nächste Ebene die Datenbank (DBEngine), Formulare, Berichte und s.o. Ein Objekt kann selbst weitere Objekte enthalten, d.h. ein Formular kann Steuerelemente enthalten, die ihrerseits Objekte sind. Das angehängte „s“ bezeichnet eine Auflistung (Collection) von gleichartigen Objekten. Alle Abfragen sind bzw. in der Auflistung QueryDefs zusammengefaßt. Das DBEngine Objekt stellt die Access zugrundeliegende MS Jet Database Engine dar, es enthält Methoden, wie RepairDatabase, CompactDatabase. Im Workspace werden Datenbanken, Benutzer und Transaktionen verwaltet, wichtig sind die Workspace Objekte für Datenbankenzugriffe über ODBC und für das Sicherheitssystem. In jedem Workspace können mehrere Datenbanken geöffnet werden. TableDefs sind Tabellen, Relations sind Relationen, QueryDefs sind Abfragen, Recordsets ermöglichen den Zugriff auf Daten in Tabellen und Abfragen. Errors Forms Reports DoCmd Screen

41 Zugriff auf Tabellen/Datensätze
Tabelle erstellen Datenbank.CreateTableDef(Tabellenname) Feld in Tabelle erstellen Tabelle.CreateField(“Beispiel“, dbInteger) Feld an die Tabelle anhängen Tabelle.Fields.Append Feldname Tabelle anhängen Datenbank.TableDefs.Append Tabellenname

42 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

43 Zugriff auf Tabellen/Datensätze
Tabelle.Index = “MNr“ Tabelle.Seek “Vergleichsoperator“, “Suchzeichenkette“ Bei Abfragen stehen FindFirst FindLast FindNext FindPrevious mit Suchzeichenkette als Parameter zur Verfügung

44 Fehlerbehandlung Wird erleichtert durch: Setzen von Haltepunkten
Schrittweise Ausführung Variablenüberwachung Prozeduraufrufe verfolgen Grundsätzlich ist die kontextsensitive Hilfe [F1] zu empfehlen.

45 Fehlerbehandlung Im Codeeditor bietet das Menu TESTEN Unterstützung bei der Fehlersuche

46 Mit diesen Befehlen kann man die Module von Hand kompilieren
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).

47 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überwachung und die Einzelschrittausführung einsetzen. Einzelschrittausführung Variablenüberprüfung

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

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

50 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


Herunterladen ppt "Visual Basic für Applikationen (VBA)"

Ähnliche Präsentationen


Google-Anzeigen