Microsoft Access 2013-Programmierung Das Handbuch

Walter Doberenz

Thomas Gewinnus

Published by Microsoft Press Deutschland

A Note Regarding Supplemental Files

Supplemental files and examples for this book can be found at http://examples.oreilly.com/9783866454712/. Please use a standard desktop web browser to access these files, as they may not be accessible from all ereader devices.

All code files or examples referenced in the book will be available online. For physical books that ship with an accompanying disc, whenever possible, we’ve posted all CD/DVD content. Note that while we provide as much of the media content as we are able via free download, we are sometimes limited by licensing restrictions. Please direct any questions or concerns to booktech@oreilly.com.

Vorwort

Microsoft Access ist weit mehr als nur eine komfortable Datenbankverwaltung, denn dem fortgeschrittenen Anwender steht darüber hinaus eine vollständige und vor allem preiswerte Entwicklungsumgebung für individuell geprägte Datenbankanwendungen zur Verfügung. Zusammen mit der objekt- und ereignisorientierten Programmiertechnik bilden VBA, SQL, DAO/ADO, Makros und XML ein mächtiges Werkzeug, um leistungsfähige Datenbank-Applikationen mit besserer Performance und auf beachtlich höherem Niveau zu erstellen.

Zum Buchinhalt

Dieses Buch bietet Ihnen eine fundierte Einführung in die Programmierung von Datenbanken mit Access 2013. Es handelt sich hierbei um die wesentlich erweiterte und überarbeitete Neuauflage unserer bekannten Vorgängertitel zu Access 95/97/2000/2002/2003/2007/2010 wobei alle wesentlichen Neuerungen berücksichtigt wurden.

Dieses Buch wurde von Praktikern für die Bedürfnisse der Praxis geschrieben. Die Autoren haben deshalb bei der Zusammenstellung des Inhalts weniger aus den zu Access 2013 mitgelieferten Dokumentationen, sondern vor allem aus eigenen Quellen und Erfahrungen geschöpft:

Lehrgänge für Datenbankprogrammierer

Vorlesungen über Datenbankprogrammierung an Fachhochschulen

und (last, but not least) das zahlreiche Feedback unserer Leser zu unseren Vorgängertiteln

Mit VBA (Visual Basic for Applications) stoßen Sie das Tor zur Windows-Programmierung weit auf und greifen direkt auf die mächtige Access-Bibliothek, die DAO-/ADO-Datenzugriffsobjekte oder auf das Windows-API (Application Programming Interface) zu. Verständlicherweise ist es im Rahmen dieses Buches unmöglich, auf alle Funktionen sowie auf alle Objekte und Sprachelemente der einzelnen Bibliotheken einzugehen. Dies ist Sache der Befehlsreferenz, auf die Sie am bequemsten über die integrierte Online-Hilfedatei zugreifen können. Ziel des Buches soll es sein, einen Gesamtüberblick zu geben und praktische Konzepte zu vermitteln.

In den insgesamt 22 Kapiteln finden Sie:

Ausführliches Know-how über die objekt- und ereignisorientierte Gestaltung der Benutzerschnittstelle von Microsoft Access

Eine umfassende Einführung in VBA, SQL und XML mit einer übersichtlichen und auf das Wesentliche reduzierten Sprachbeschreibung

Eine gestraffte Einführung in den Datenbankzugriff (Jet, Microsoft SQL Server 2012, Azure SQL) unter Verwendung von DAO/ADO

Informationen zu Internet-/Intranet-Technologien sowie zur Anbindung an die .NET-Technologie

Eine gestraffte Einführung in die Programmierung von Makros

Eine Übersicht zur Zusammenarbeit mit dem Microsoft SharePoint Server

Eine umfangreiche Einführung in die Programmierung von Access Web Apps

Viele Kapitel verfügen über einen Übersichtsteil, in dem wichtige Informationen (z.B. relevante Eigenschaften, Methoden und Ereignisse von zentralen Objekten) griffbereit zur Verfügung stehen

Zahlreiche Praxisbeispiele am Ende der Kapitel dienen der Vertiefung der vermittelten theoretischen Grundlagen.

Begleitdateien

Den Quellcode dieses Buchs können Sie sich unter einer der folgenden Adressen herunterladen:

WWW

www.doko-buch.de

WWW

www.microsoft-press.de/support/9783866454712

WWW

msp.oreilly.de/support/2363/806

Für Einsteiger einige Hinweise, die wir aufgrund von Erfahrungen mit unseren Vorgängertiteln diesmal nicht vergessen wollen:

Sie sollten natürlich vorher Microsoft Access 2013 auf Ihrem PC installiert haben. Das allerdings schließt nicht aus, dass fast alle Beispiele auch unter Access 2010 und niedriger funktionieren werden.

Sollte doch einmal eine Datenbank/Datei beim Testen der Beispiele nicht gefunden werden, müssen Sie im betreffenden Modul die Pfadangaben anpassen.

Falls doch einmal ein Beispiel nicht funktionieren sollte, lesen Sie die beigefügte Readme-Datei.

Zumindest für das Kapitel 10 ist die Installation des Microsoft SQL Server ab Version 2008 bzw. der entsprechenden Express Version erforderlich. Beachten Sie die erforderlichen Sicherheitseinstellungen für den Zugriff.

Bevor Sie die Beispiele des Kapitel 11 und Kapitel 12 (SharePoint Server) ausprobieren können, sollten Sie sich mit den in diesem Kapitel beschriebenen Voraussetzungen vertraut machen.

Sicherheitseinstellungen

Im Zeitalter wachsender Internetkriminalität müssen Sie sich daran gewöhnen, dass zum Schutz Ihres Computers reichlich Sicherheitshürden aufgebaut wurden: Access-Sicherheit (VBA), Systemsicherheit (Windows 7/8), SQL Server-Sicherheit, .NET-Sicherheit.

Das führt für Sie als VBA-Programmierer zunächst zu folgender Konsequenz:

Hinweis

Aufgrund der restriktiven Sicherheitsanforderungen von Access 2013 wird es Ihnen in der Regel nicht gelingen, ohne entsprechende Anpassungen der Access 2013-Entwicklungsumgebung ihren eigenen Code bzw. die zu diesem Buch mitgelieferten Beispiele zum Laufen zu bringen!

Auch unter Access 2013 wird VBA-Code standardmäßig als »unsicherer Code« eingestuft. Falls das Formular den Code nicht ausführt und stattdessen unterhalb des Menübands eine Sicherheitswarnung zeigt, klicken Sie auf die Inhalt aktivieren-Schaltfläche.

Um diese lästigen Sicherheitswarnungen generell zu verhindern, sollten Sie (zumindest für die Dauer der Programmentwicklung) im Sicherheitscenter Ihr Datenbankverzeichnis als Vertrauenswürdigen Speicherort hinzufügen.

Hinweis

Eine detaillierte Anleitung, wie Sie mit diesem »heißen Eisen« am besten umgehen, finden Sie im Abschnitt „Sicherheitseinstellungen“ des Kapitel 1 („Sicherheitseinstellungen“).

Ein gutgemeinter Ratschlag an Einsteiger

Programmieren lernt man nur durch Beispiele! Dies ist eine knallharte Wahrheit, um die sich eine zu stark akademisch geprägte Leserschaft gern herummogeln möchte. Wie alle unsere anderen Programmier-Bücher ist deshalb auch dieses Buch kein Lehrbuch, das Sie nach dem Motto »Jetzt lernen wir Microsoft Access« linear von vorn nach hinten durcharbeiten sollen. Sehr schnell wird Ihnen dabei unterwegs die Luft ausgehen und Sie verlieren die Lust. Falls Sie es dennoch bis zum Ende schaffen, sind Sie dennoch nicht in der Lage, eine praxistaugliche Datenbankapplikation zu erstellen.

Wir empfehlen hingegen dem Einsteiger, sich zunächst nur auf einige ausgewählte Kapitel zu konzentrieren und parallel zum Studium des Buchs und tatkräftiger Einbeziehung der Online-Hilfe ein privates Datenbankprojekt in Angriff zu nehmen, wie zum Beispiel die Verwaltung der eigenen Bücher- oder CD-Sammlung. Der Lerneffekt, der aus selbst begangenen und selbst behobenen Fehlern resultiert, ist ein ungeheurer!

Motiviert durch kleine Erfolgserlebnisse und Aha-Effekte werden Sie Ihr Projekt und damit Ihr Wissen schrittweise vergrößern und verfeinern und sich nach dem Prinzip »soviel wie nötig« nur auf die Kapitel konzentrieren, die Sie zur Lösung Ihrer aktuellen Probleme wirklich benötigen.

Zu den Autoren

Hinweise zum Buch und Leseranfragen können Sie über unsere Website direkt an die Autoren richten:

WWW

www.doko-buch.de

Dort finden Sie auch eventuelle Fehlerberichtigungen und ergänzende Beispiele.

Danksagung

Danken möchten wir vor allem Herrn Dr. Majer von Microsoft Press für die tatkräftige und verständnisvolle Unterstützung beim Zustandekommen des Werkes. Ein ebenso großes Dankeschön gebührt unseren Familien, ohne deren unerschöpfliche Nachsicht ein Projekt wie dieses nicht erfolgreich hätte abgeschlossen werden können.

Wir hoffen, Ihnen mit diesem Werk einen treuen Begleiter für die Entwicklung anspruchsvoller Datenbankapplikationen an die Hand gegeben zu haben, der es verdient, seinen ständigen Platz nicht im Regal, sondern griffbereit neben dem Computer einzunehmen.

Viel Spaß und Erfolg beim Programmieren mit Access!

Walter Doberenz und Thomas Gewinnus

Vorwort

Leider hat die Fülle des Materials und das Einsatzspektrum von Microsoft Access mittlerweile alle Grenzen gesprengt (Sie sehen es sicher auch an den Seitenzahlen unserer Bücher), und so blieb uns nichts anderes übrig, als einige Kapitel bzw. Themen schweren Herzens komplett in das E-Book auszulagern.

Aus Gründen der Aktualität haben es die Themen

Techniken der Programmentwicklung

Dateien und Verzeichnisse

XML in Theorie und Praxis

SQL in Theorie und Praxis

Access im Internet/Intranet

nicht in das gedruckte Buch geschafft. Sie müssen dennoch nicht darauf verzichten, sondern können von allen Vorteilen eines E-Books profitieren (Suchfunktion, Hyperlinks, farbige Abbildungen und nicht zuletzt auch das Gewicht).

Für Sie als Leser bedeutet das: über 1400 Seiten Material zum Thema »Access-Programmierung«, und das zum Preis von einem Buch!

Wir hoffen, dass Sie mit der getroffenen Wahl zufrieden sind und beide »Bücher« Ihren Platz auf Ihrem Schreibtisch/PC finden werden.

Walter Doberenz und Thomas Gewinnus

Wintersdorf/Frankfurt/O., im Juni 2013

Kapitel 1. Einführung

In diesem Kapitel:

„VBA-Programmierung unter Microsoft Access 2013“

„Sicherheitseinstellungen“

„Einführungsbeispiele“

„Highlights und Features von Access 2013“

„Übersichten und Ergänzungen“

Dieses Kapitel soll Ihnen einen ersten Überblick über die VBA-Programmierung unter Microsoft Access 2013 vermitteln. Da das Buch nicht für den absoluten Einsteiger geschrieben wurde, gehen die Autoren davon aus, dass Sie bereits über gewisse Erfahrungen in der konventionellen Access-Datenbankprogrammierung verfügen, die Entwicklungsumgebung bedienen können und zumindest auch wissen, wie ein Makro funktioniert.

VBA-Programmierung unter Microsoft Access 2013

VBA (Visual Basic for Applications) ist weit mehr als nur eine Alternative zur gängigen Makro-Programmierung unter Microsoft Access. Es handelt sich hier um eine komfortable und leistungsfähige Programmiersprache für alle Microsoft Office-Produkte.

Visual Basic versus VBA

Im Unterschied zu Visual Basic ist allerdings VBA keine eigenständige Sprache, mit der allein man lauffähige Programme entwickeln könnte, sondern es lassen sich mit VBA bestimmte Anwendungen, wie z.B. Microsoft Access, in ihrer Funktionalität erweitern bzw. nutzerspezifischen Anforderungen anpassen. Oder fachmännischer ausgedrückt: Von VBA aus lassen sich die Objektmodelle von Access, Word, Excel etc. steuern. Wenn wir im Folgenden mal von »Visual Basic« und mal von »VBA« sprechen, so sollten Sie diese »Laxheit« nicht auf die Goldwaage legen, denn gemeint ist ein und dasselbe. Fakt ist, dass VBA als Untermenge vollständig in Visual Basic enthalten ist[1], bei weitem aber nicht alle Features von Visual Basic unterstützt. Man könnte mit anderen Worten VBA auch als »kleinsten gemeinsamen Nenner« von Visual Basic[2] und Access bezeichnen (Abbildung 1.1).

Abbildung 1.1 VBA als Schnittmenge zwischen Microsoft Visual Basic und Microsoft Access

Hinweis

Es gibt zahlreiche Anwendungen, in die VBA integriert ist, und dabei handelt es sich bei weitem nicht nur um Microsoft Office-Produkte.

Objekt- und ereignisorientierte Programmierung

Im Unterschied zur klassischen prozeduralen Anwendungsentwicklung hat sich der VBA-Programmierer verstärkt mit folgenden Begriffen auseinander zu setzen:

Objekte (Objects)

Die verschiedenen Office-Anwendungen bieten ihre Funktionalität in Form von Objekten an, auf die mit VBA-Code zugegriffen werden kann. Obwohl wir mittlerweile im .NET-Zeitalter angekommen sind, liefert das COM (Component Object Model) immer noch die Grundlage für die Zusammenarbeit der verschiedenen Office-Objekte (auch über Anwendungsgrenzen hinaus).

Aus Anwendersicht kennen Sie bereits Datenbankobjekte wie Tabelle, Abfrage, Formular, Bericht, Makro, Modul. Für den VBA-Programmierer sind neben den datenbankspezifischen Objekten Tabelle und Abfrage vor allem Forms, Reports und Controls von besonderem Interesse, da sie die wesentlichen Anwenderschnittstellen zur Verfügung stellen. Hinzu kommen die Module, die keine Objekte im engeren Sinne sind, sondern lediglich Quelltextbibliotheken darstellen.

Eigenschaften (Properties)

Hinter diesem Begriff verbergen sich die Attribute von Objekten, wie z.B. Höhe (Height) und Breite (Width) eines Textfeldes. Jedes Objekt verfügt über seine eigene Menge von Eigenschaften, die teilweise nur zur Entwurfszeit (im Eigenschaftenfenster) oder zur Laufzeit (per Quellcode) zugewiesen werden können. Allgemein unterscheiden wir zwischen Format-, Daten- und anderen Properties (siehe dazu Kapitel 4).

Methoden (Methods)

Diese auf dem Objekt definierten Funktionen und Prozeduren hauchen »Leben« in die bislang nur mit statischen Attributen behafteten Objekte. So erzeugt z.B. die Line-Methode eine Linie vor dem Hintergrund eines Reports, mit Print kann Text im Debug-Objekt (Testfenster) ausgegeben werden usw.

Ereignisse (Events)

Diese werden von Nachrichten ausgelöst, die vom Objekt empfangen werden. Dieser Nachrichtenverkehr stellt die eigentliche Schnittstelle zu Windows dar. Der Mausklick auf ein Formular löst z.B. ein MouseDown-Ereignis für dieses Objekt aus. Wir unterscheiden zwischen Fenster- und Fokus-, Tastatur- und Maus- sowie Daten- und Filter-Events (siehe Kapitel 4 und Kapitel 5). Eine Hauptaufgabe des Programmierers ist das Schreiben von so genannten Ereignisbehandlungsroutinen (Event-Handler), in denen er festlegt, wie das Objekt bei Eintreffen eines bestimmten Ereignisses zu reagieren hat.

Einen ersten Eindruck der objekt- und ereignisorientierten VBA-Programmierung gewinnen Sie am besten anhand der Beispiele im Praxisteil dieses Kapitels. Weitere grundlegende Ausführungen zur objektorientierten Programmierung (OOP) folgen in Kapitel 6.

VBA- oder Makro-Programmierung?

Die klassischen Programmiermöglichkeiten unter Microsoft Access (Makro- und Ausdruckseditor, QbE-Fenster etc.) sind bereits so komfortabel, dass Sie mit Recht die Frage stellen werden: »Wozu brauche ich denn dann überhaupt noch VBA?«

Hier eine Aufzählung wichtiger Argumente, die für den Einsatz von VBA sprechen:

Erhöhung der Performance (Ausführungsgeschwindigkeit)

Definition eigener Funktionen (Makros können keine Werte zurückliefern!)

Spezielle Fehlerbehandlungsroutinen sind möglich

Verwendung von Ereignissen mit Übergabeparametern

Definition neuer Objekte (Tabellen, Abfragen, Formulare, Berichte) per Code

Zugriff auf andere Windows-Programme per OLE oder DDE

Nutzung spezieller Funktionen des Windows-API

Auslagerung von Teilen des Anwendungscodes in eine Bibliothek

Arbeiten mit den Datenbank-Objekten

Zugriff auf integrierte Funktionen des Datenbanksystems (z.B. Routinen zur Datendefinition oder SQL-Server-Prozeduren)

Auch der genialste Makro-Programmierer wird wohl früher oder später feststellen, dass er an Grenzen stößt, die sich nur mit dem mächtigen Instrumentarium von VBA durchbrechen lassen.

Der Umstieg zu VBA wird für den erfahrenen Makro-Programmierer vor allem durch zwei in Microsoft Access eingebaute Features erleichtert:

Automatische Makro-Konvertierung

DoCmd-Objekt

Konkrete Anleitungen dazu finden Sie im entsprechenden Einführungsbeispiel (ab „Einführungsbeispiele“) bzw. im Übersichtsteil dieses Kapitels (ab „Übersichten und Ergänzungen“).

Hinweis

Allerdings soll – bei aller Liebe zu VBA – auch nicht verschwiegen werden, dass die Programmierung von Datenmakros und Web-Datenbanken unter VBA nicht möglich ist.

Die VBA-Entwicklungsumgebung

Da in diesem Buch auf die VBA-Programmierung eine zentrale Rolle spielt, werden wir uns im Folgenden schwerpunktmäßig auf die Elemente der VBA-Entwicklungsumgebung (IDE[3]) konzentrieren und die übrigen Bedienfunktionen weitgehend als bekannt voraussetzen.

Formularentwurf

Beim visuellen Entwurf der Benutzeroberflächen von Formularen bzw. Berichten haben wir es zunächst mit den standardmäßigen Fenstern der Access 2013-IDE zu tun:

Navigationsbereich

Formular-/Berichtsfenster (Entwurfsansicht)

Eigenschaftenblatt

Menüband

Da vorausgesetzt wird, dass Sie bereits über Erfahrungen beim visuellen Entwurf von Formularen/Berichten verfügen, kann wohl auf weitere Erklärungen verzichtet werden (siehe „Einführungsbeispiele“).

Abbildung 1.2 Die Entwicklungsumgebung, wie sie jeder Access 2013-Anwender kennt

Code-Fenster und Symbolleiste

Das Tor zur VBA-Programmierung öffnet sich Ihnen weit, nachdem Sie die Registerkarte DATENBANKTOOLS gewählt haben und auf die Schaltfläche Visual Basic (Befehlsgruppe Makro) klicken. Hier wählen Sie im Projekt-Explorer das gewünschte Formular aus.

Die wichtigsten Fenster

Das VBA-Fenster sieht unter Access 2013 genauso aus wie bei den übrigen Office-Anwendungen (siehe Abbildung 1.3).

Die wichtigsten Fenster innerhalb der VBA-IDE sind

Code-Fenster (öffnen über oder Ansicht/Code),

Eigenschaftenfenster (öffnen über oder Ansicht/Eigenschaftenfenster) und

Projektfenster (öffnen über oder Ansicht/Projekt-Explorer).

Auf einige Besonderheiten dieser Fenster werden wir zu einem späteren Zeitpunkt eingehen.

Abbildung 1.3 Die drei wichtigsten Fenster der VBA-Entwicklungsumgebung

Die wichtigsten Menübefehle

Wenn Sie in der VBA-IDE arbeiten, wechselt das Menüband das Aussehen und stellt Ihnen eine Reihe von Bedienfunktionen zur Verfügung, die Sie speziell für die Arbeit mit dem Code-Editor benötigen. Sie werden feststellen, dass viele Funktionen starke Ähnlichkeiten zur Bedienung einer Textverarbeitung unter Windows aufweisen.

Die am häufigsten benötigten Menüpunkte sind über Schaltflächen. In Abhängigkeit vom momentanen Zustand des Editors können einige Schaltflächen gesperrt sein und/oder das Aussehen bzw. die Funktion wechseln. Außerdem haben Sie die Möglichkeit, über das Menü Ansicht/Symbolleisten Änderungen vorzunehmen.

Tabelle 1.1 Die wichtigsten Menübefehle für den VBA-Programmierer

Symbol

Menübefehl

Tasten

Erläuterung

Ansicht/Microsoft Access

Zeigt das Access-Hauptfenster an

Ansicht/Code

Zeigt das Code-Fenster an

Ansicht/Projekt-Explorer

Zeigt den Projekt-Explorer an

Ansicht/Objektkatalog

Zeigt den Objektkatalog an

Einfügen/Modul

Fügt ein neues (leeres) Modul in die Datenbank ein

Datei/Speichern

Speichert den Inhalt des Moduls

Bearbeiten/Ausschneiden

Schneidet markierten Code aus und kopiert ihn in die Zwischenablage

Bearbeiten/Kopieren

Kopiert markierten Code in die Zwischenablage

Bearbeiten/Einfügen

Fügt Text aus Zwischenablage in Code ein

Bearbeiten/Suchen

Sucht markierten Text in diesem oder in anderen Codemodulen

Bearbeiten/Rückgängig

Macht die zuletzt durchgeführte Bedienaktion rückgängig (falls möglich)

Bearbeiten/Wiederholen

Stellt den Ausgangszustand vor Bearbeiten/Rückgängig wieder her

Ausführen/Fortsetzen

Setzt die Ausführung des Codes nach einer Unterbrechung fort (wenn möglich)

Ausführen/Unterbrechen

Unterbricht die Ausführung des Codes

Ausführen/Zurücksetzen

Beendet die Ausführung des Codes und löscht Variablen

Ausführen/Entwurfsmodus

Kehrt in den Entwurfsmodus zurück

Die obige Tabelle zeigt eine Zusammenstellung der für den Einstieg in die Codeprogrammierung zunächst wichtigsten Schaltflächen samt zugehöriger Menübefehle.

Das Eigenschaftenfenster

Hier handelt es sich nicht mehr um das dem Makro-Programmierer bestens vertraute Eigenschaftenblatt mit den eingedeutschten Bezeichnern, sondern hier haben Sie es mit einem völlig neuen Outfit und den originalen VBA-Bezeichnern zu tun (z.B. Datensatzquelle → RecordSource). Als weiteren Unterschied werden Sie feststellen, dass die Ereignis-Seite nicht mehr da ist (die Auswahl der Ereignisse wird nunmehr im Ereignisselektor rechts oben im Code-Fenster vorgenommen).

Mit dem Objektselektor (oberes Dropdownfeld) können Sie das gewünschte Objekt (Form, Textfeld etc.) auswählen, die Eigenschaften werden wie gewohnt zugewiesen. Eine Gegenüberstellung der eingedeutschten und der exakten VBA-Bezeichner finden Sie im Übersichtsteil des Kapitels („Übersichten und Ergänzungen“).

Der Projekt-Explorer

Dies ist gewissermaßen die »Schaltzentrale« Ihrer Access-Anwendung. In einer baumartigen Struktur finden Sie alle zu Ihrer Anwendung gehörenden Objekte wie Formulare, Reports, Code- und Klassenmodule übersichtlich aufgelistet. Durch Doppelklick werden das entsprechende Codefenster und das Eigenschaftenfenster geöffnet. Über das Kontextmenü der rechten Maustaste können Sie den Eigenschaftendialog aufrufen, den Quellcode ausdrucken lassen, das Objekt wieder entfernen etc.

Das Code-Fenster

In diesem Fenster, dem VBA-Editor, wird sich Ihr zukünftiges Leben als Programmierer im Wesentlichen abspielen. Der Objektselektor (links oben) bzw. der Ereignisselektor (rechts oben) leisten im Zusammenhang mit dem Schreiben von Ereignisbehandlungsroutinen (Event-Handlern) wertvolle Hilfsdienste. Konkreteres dazu erfahren Sie im VBA-Einführungsbeispiel dieses Kapitels („Einführungsbeispiele“).

Im Folgenden sollen nur einige allgemeine Hinweise zum Schreiben von Quellcode gegeben werden, was ähnlich wie in einem Textverarbeitungsprogramm vonstatten geht (siehe z.B. das Menü Bearbeiten). Einige Besonderheiten sind jedoch zu beachten:

Groß- und Kleinschreibung

Die Groß-/Kleinschreibung spielt zwar keine Rolle, trotzdem korrigiert der Code-Editor bereits bei der Eingabe die Schreibweise, indem er Schlüsselwörter mit Großbuchstaben beginnen lässt. Bei selbst definierten Bezeichnern sollten Sie die Groß- und Kleinschreibung sinnvoll dafür einsetzen, um die Lesbarkeit des Listings zu verbessern.

Beispiel

Die Bedeutung von

HaushaltKassenSaldo

ist sicherlich eher zu begreifen, als die gleichwertige Schreibweise

haushaltkassensaldo

Mehrfachanweisungen

Normalerweise steht in jeder Zeile eine einzige Anweisung. Um Platz zu sparen, ist es aber möglich, auch mehrere Anweisungen pro Zeile unterzubringen. Als Separator dient ein Doppelpunkt (:).

Beispiel

Die beiden Anweisungen:

i = i+1
Call addiere(i)

können so in einer Zeile zusammengefasst werden:

i = i+1 : Call addiere(i)

Zeilenumbruch

Die maximale Zeilenlänge des Editors liegt erheblich über der Lesbarkeitsgrenze, sodass man sich bei langen Anweisungen (z.B. Aufruf von API-Funktionen) eine übersichtlichere Darstellung wünscht. Für diesen Zweck existiert ein Zeilenumbruchzeichen, der Unterstrich ( _ ) in Kombination mit einem vorangestellten Leerzeichen.

Beispiel

Die Deklaration:

Sub verschiebMich(ctrl As Control, x0 As Integer, y0 As integer, Optional breite)

kann wie folgt auf zwei Zeilen aufgeteilt werden:

Sub verschiebMich(ctrl As Control, x0 As Integer, y0 As Integer, _
Optional breite)

Hinweis

Achten Sie unbedingt auf das Leerzeichen vor dem Unterstrich!

Innerhalb von Strings (Zeichenketten) ist ein Zeilenumbruch auf die oben beschriebene Weise allerdings nicht möglich. Hier müssen Sie den String vorher in Teilstrings zerlegen, die dann addiert werden.

Beispiel

Die Anweisung:

Me.RecordSource = "SELECT Name, Ort, Telefon, KontoNr FROM Kunden"

lässt sich wie folgt aufteilen:

Me.RecordSource = "SELECT Name, Ort, Telefon, KontoNr " & _
                  "FROM Kunden"

Listing strukturieren

Im Interesse der Übersichtlichkeit sollte man die Blockstruktur des Codes deutlich durch Einrückungen hervorheben. Dabei genügt im Allgemeinen ein Versatz nach rechts von einem Zeichen pro Ebene.

Beispiel

Ein gut strukturiertes Listing

Private Sub Form_Load()
Dim i As Integer
  For i = 0 To Controls.Count – 1
    If Controls(i).ControlType = acCommandButton Then
      Call verschiebe(Controls(i), links+i * breite, breite, hoehe)
    End If
  Next i
End Sub

Hinweis

Wenn Sie das Kontrollkästchen Automatisch Einzug vergrößern auf der Registerkarte Editor (Menü Extras/Optionen) aktivieren, kann der Einrückvorgang automatisiert werden.

Verwendung von Ausrufezeichen, Punkt und eckigen Klammern

Beim Quelltextstudium in diesem Buch wird Ihnen vielleicht auffallen, dass Objektbezeichner von ihren Eigenschaften, Methoden oder untergeordneten Objekten scheinbar willkürlich manchmal durch ein Ausrufezeichen (!) oder durch einen Punkt (.) abgetrennt werden.

Beispiel

Verwendung von Ausrufezeichen/Punkt

Forms!Kunden.Enabled = True

Hinter dieser Vorgehensweise verbirgt sich die Idee, dass der von Ihnen geschriebene Code auch noch dann von Access-Nachfolgeversionen erkannt wird, wenn mit einer Erweiterung des Sprachumfangs neue Bezeichner eingeführt werden, die zufällig namensgleich mit benutzerdefinierten Namen von Objekten, Eigenschaften oder Methoden sind. Um dem in solchen Fällen vorprogrammierten Crash aus dem Wege zu gehen, ist es eine reine Vorsichtsmaßnahme, wenn Sie sich an folgende Regeln halten:

Verwenden Sie ein Ausrufezeichen (!) vor Objekten, die Sie selbst benannt haben.

Benutzen Sie einen Punkt (.) vor Eigenschaften und Methoden, deren Namensgebung von Microsoft Access vorgenommen wurde.

Verwenden Sie eckige Klammern, um die Namen von Objekten einzuschließen, die Leerzeichen enthalten, z.B. [Personal Table], oder verzichten Sie besser vollständig auf Leerzeichen innerhalb von Objektbezeichnern, verwenden Sie z.B. PersonalTable.

Kommentare

Sie sollten Kommentare stets reichlich in den Quelltext einbauen. Nicht nur andere Programmierer, die später Ihren Code verstehen bzw. ergänzen sollen, werden Ihnen dafür dankbar sein. Auch Sie selbst werden nach einer mehrmonatigen Unterbrechung weniger Mühe haben, sich wieder in Ihr eigenes Programm einzuarbeiten. Kommentare erleichtern den Wiedereinstieg.

Beispiel

Kommentare

Dim anzahl As Integer       ' Anzahl von Datensätzen der Tabelle "Personen"
' es folgen weitere Deklarationen: ------------------------------

Wie Sie sehen, werden Kommentare durch ein Apostroph (’) eingeleitet. Wenn sich der Kommentar, wie oben gezeigt, über mehrere Zeilen erstreckt, so ist trotzdem in jeder Zeile das Apostroph voranzustellen.

Farbige Hervorhebungen

Eine weitere Möglichkeit, die Lesbarkeit Ihres Quelltextes zu verbessern, erschließt sich Ihnen auf den Registerkarten Editorformat und Editor (Menü Extras/Optionen).

Für die verschiedenen Textbereiche (normaler Text, Markierungstext, Syntaxfehlertext, Haltepunkttext, Kommentartext, Schlüsselworttext, Bezeichnertext etc.) können Sie bestimmte Vorder- und Hintergrundfarben wählen.

Für die »Fenstereinstellungen« empfiehlt sich insbesondere die Aktivierung der Optionen Standardmäßig ganzes Modul anzeigen und Prozedurtrennlinie. In diesem Fall erscheint der komplette Quelltext in einem einzigen Fenster, die einzelnen Prozeduren sind durch waagrechte Linien voneinander getrennt.

Abbildung 1.4 Optionen für das Code-Fenster einstellen

Hinweis

Den gleichen Effekt können Sie aber auch erreichen, wenn Sie die Fenstereinstellung mittels der beiden Schaltflächen in der linken unteren Ecke des Codefensters umschalten.

Arbeiten mit der Hilfe

Anstatt ziellos im üppigen Angebot herumzustochern, sollte man als VBA-Programmierer die leistungsfähigen Suchfunktionen nutzen. So kann man z.B. den Textkursor in einen unbekannten VBA-Ausdruck setzen und anschließend die -Taste drücken.

Abbildung 1.5 Beispiel für das Arbeiten mit der Hilfe

[1] Zumindest seit Office 2000 wird dieser Anspruch erhoben.

[2] Das galt zumindest bis zur Version VB 6.0.

[3] Integrated Development Environment

Sicherheitseinstellungen

Unter Access 2013 werden benutzerdefinierte Makros und VBA-Code zunächst als »unsicherer Code« verteufelt, die Ausführung verweigert. Ganz bewusst haben wir deshalb diesen Abschnitt bereits in dieses erste Kapitel gestellt, da die Gefahr groß ist, dass der Einsteiger sich Hals über Kopf in die Makro- und VBA-Programmierung stürzt, ohne sich vorher das notwendigste Wissen über das doch recht restriktive Sicherheitsmodell von Access angeeignet zu haben.

Zur Geschichte der Access-Sicherheit

Als Antwort auf die wachsende Bedrohung durch Viren und Würmer hat Microsoft bereits 2002 unter dem Namen Trustworthy Computing eine Initiative gestartet, um alle Produkte sicherer zu machen.

Bill Gates hat die Ernsthaftigkeit dieser Initiative wie folgt unterstrichen:

»In der Vergangenheit haben wir unsere Software hauptsächlich durch das Hinzufügen neuer Features und Funktionen auf die Bedürfnisse unserer User ausgerichtet, indem wir unsere Plattform reichlich erweiterbar machten. Wir haben da großartige Arbeit geleistet, aber all diese wunderbaren Features sind nichts wert wenn die User unserer Software kein Vertrauen mehr entgegenbringen. Wenn wir aber heute vor der Wahl zwischen dem Hinzufügen neuer Features und der Lösung von Sicherheitsproblemen stehen, so müssen wir uns für die Sicherheit entscheiden. Unsere Produkte müssen nicht nur von Haus aus sicher sein, sondern wir müssen auch unverzüglich auf Sicherheitslücken reagieren, sobald sie sichtbar werden.«

In Zeiten vor Access 2003 konnte Ihnen ein »guter Freund« ohne weiteres eine Datenbankdatei schicken, die bösartigen Code enthielt. Sobald Sie die Datenbank öffneten konnte dieser Code ausgeführt werden und Ihr System beschädigen. Alternativ konnte der Programmierer gefährlichen Code in eine Abfrage, ein Formular oder einen Report einfügen.

In Version 11 (Access 2003) wurden Sie beim Öffnen einer nicht signierten/zertifizierten Datenbank mit einer Reihe verwirrender Dialoge konfrontiert, wenn Sie die Sicherheitsstufe für Makros auf Medium oder High eingestellt hatten. Nach dem Abarbeiten dieser verschiedenen Dialoge konnte es passieren, dass Sie verzweifelt vor einer Datenbank saßen, die sich nicht mehr öffnen ließ.

Access 2007 hatte das Sicherheitsmodell verbessert, indem zum Access Interface eine Komponente namens »Trust Center« hinzugefügt wurde. Dieses Sicherheits-Interface ist weitaus weniger verwirrend als das »Macro Security«-Feature von Access 2003. Mit der High-Sicherheitsebene in Access 2003 waren Sie nicht in der Lage irgendeine Datenbankdatei zu öffnen, weil potenziell alle Access-Datenbanken irgendwelche Makros, VBA-Code oder Aufrufe an unsichere (unsafe) Funktionen enthalten konnten.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!