Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2000.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Fehlersuche und -behandlung mit Access

Autor: André Minhorst, Duisburg

Wenn Sie bereits einmal Datenbankanwendungen mit VBA-Funktionen und -Prozeduren entwickelt haben, kennen Sie bereits das Vergnügen, sich mit dem Auffinden und Beheben der unterschiedlichsten Fehler herumzuschlagen - es sei denn, Sie programmieren so gut, dass nie Fehler auftreten. Im vorliegenden Beitrag erfahren Sie, welche Fehlerarten bei der Arbeit mit VBA auftreten können, wie man die Fehler findet und sie schließlich behebt. Dabei lernen Sie auch die unterschiedlichen Möglichkeiten der Fehlersuche kennen.

Fehlerarten in VBA

Die Fehlerarten, die bei der Programmierung mit VBA auftreten, können in drei unterschiedliche Gruppen eingeteilt werden.

Syntaxfehler

Die erste Gruppe beinhaltet die so genannten Syntaxfehler. Syntaxfehler erkennt Access entweder direkt bei der Eingabe oder spätestens beim Kompilieren. Ein häufig anzutreffender Fehler bei der Eingabe ist eine zu viel gesetzte Klammer. Auf solche Fehler weist Access Sie nach dem Verlassen der betroffenen Zeile durch eine entsprechende Fehlermeldung in einem Meldungsfenster hin (Abb. 1).

Abb. 1: Access bemängelt Syntaxfehler direkt bei der Eingabe.

In der Regel handelt es sich bei Syntaxfehlern um solche Fehler, die Access beim Überprüfen der aktuellen Zeile entdecken kann.

Abb. 2: Optionen zur Anzeige von Fehlermeldungen

Möglicherweise möchten Sie nicht, dass Access Fehlermeldungen bei der Eingabe anzeigt. Dann öffnen Sie mit dem Menübefehl Extras ( Optionen den Dialog Optionen und wählen hier das Register Modul aus. Hier können Sie sowohl unter Code-Optionen die Anzeige von Fehlermeldungen deaktivieren als auch im Bereich Code-Farben die Textfarbe syntaktisch falscher Zeilen einstellen (Abb. 2).

Wenn Sie die Fehlermeldung ignorieren und die Prozedur dennoch ausführen, weist Access mit einer etwas weniger informativen Meldung auf den Syntaxfehler hin. Immerhin markiert Access die entsprechende Zeile rot, an welcher es zu Problemen kommt.

Kompilierzeitfehler

Manche Fehler, die eigentlich als Syntaxfehler zu bezeichnen sind, fallen bei der Syntaxprüfung während der Eingabe durchs Sieb. Dabei handelt es sich beispielsweise um For…Next-Schleifen, die nicht mit der Next-Anweisung abgeschlossen wurden. Solche Fehler erfordern die Überprüfung des gesamten Algorithmus. Da bei der Eingabe von Codes nicht nach jeder Zeile eine komplette Überprüfung stattfinden kann, erfolgt sie erst beim Kompilieren der Prozedur oder Funktion.

Eine Funktion oder Prozedur wird kompiliert, wenn Sie diese ausführen. Sie können eine Funktion aber auch kompilieren, ohne sie auszuführen. Dazu verwenden Sie einen der ersten drei Befehle des Menüs Testen. Mit den Befehlen Alle Module kompilieren und Alle Module kompilieren und speichern kompilieren Sie alle Module. Der Befehl Geladene Module kompilieren schließt nicht geladene Module sowie die Objektmodule von Formularen und Berichten aus. (

Abb. 3: Ein typischer Kompilierzeitfehler

Abb. 3 zeigt eine Prozedur, die einen typischen Kompilierzeitfehler aufweist. In diesem Zusammenhang ist zu erwähnen, dass immer nur ein Kompilierzeitfehler gleichzeitig gemeldet werden kann, da Access das Kompilieren nach dem Auffinden eines Fehlers automatisch abbricht. Weitere Fehler findet Access erst beim folgenden Kompiliervorgang.

Syntax- oder Kompilierzeitfehler sind recht schnell behoben, da man meist direkt eine recht eindeutige Beschreibung des Fehlers erhält. Man korrigiert den Fehler und kompiliert anschließend das Modul erneut, um zu überprüfen, ob der Fehler auch tatsächlich behoben wurde.

Laufzeitfehler

Manche Fehler können nicht bei der Eingabe oder beim Kompilieren festgestellt werden, da sie erst bei der Ausführung der Prozedur auftreten. Dabei gibt es die unterschiedlichsten Möglichkeiten:

  • Einer Variablen wird ein Wert eines anderen Datentyps zugewiesen, z. B. ein String einer Integer-Variablen.
  • Der Wert einer Variablen übersteigt deren Wertebereich.
  • Eine Anweisung bezieht sich auf ein Objekt, welches nicht zur Verfügung steht.
  • Der klassische Vertreter der Laufzeitfehler ist die Division zweier Zahlen, wobei der Benutzer als Teiler den Wert 0 angibt. Hier tritt eine Division durch Null auf, worauf Access wie in Abb. 4 ersichtlich reagiert. Um diesen Fehler zu verhindern, gibt es zwei Möglichkeiten: Entweder Sie setzen direkt bei der Eingabe der Werte an und geben eine entsprechende Meldung aus, wenn der Wert Null für den Nenner eingegeben wurde. Dies können Sie mit einer einfachen Anweisung erledigen (If Zahl1 = 0 then …). Oder Sie überprüfen erst nach der Berechnung, ob ein Fehler aufgetreten ist. In diesem Fall legen Sie eine Fehlerbehandlung an. Wie das geht, erfahren Sie im Abschnitt "Starten von Prozeduren".

    Abb. 4: Bei der Division durch Null tritt ein Fehler auf.

    Logische Fehler

    Zur unbequemsten Fehlerart gehören logische Fehler. Während Access sich in den meisten Fällen beim Auftreten der bisher genannten Fehler früher oder später zu Wort meldet, müssen Sie logische Fehler selbst finden und beheben.

    Ein einfacher logischer Fehler wäre beispielsweise das falsche Setzen einer Klammer bei einer Rechenoperation, denn (1+1) x 1 ist nicht dasselbe wie 1+(1x1). Wenn Sie komplizierte Berechnungen in Ihrer Anwendung durchführen und am Ende einen unerwarteten Wert erhalten, ist meist ein solch trivialer Fehler schuld am Dilemma.

    Access bietet aber auch hier beim Auffinden des Fehlers Hilfestellung. Es gibt beispielsweise zahlreiche Möglichkeiten, Variable während der Laufzeit auszugeben. Wie das funktioniert, erfahren Sie weiter unten im Abschnitt "Fehlersuche".

    Starten von Prozeduren

    Bevor Sie die folgenden Beispiele ausprobieren, erfahren Sie zunächst, wie Sie eine Prozedur starten können, wenn dies nicht durch das Betätigen einer Schaltfläche passiert. Die schnellste Art, eine Prozedur zu starten, während Sie den Programmcode im Modulfenster sehen, ist das Betätigen des Menübefehls Auswählen ( Weiter oder der gleichnamigen Schaltfläche in der Symbolleiste. Achten Sie darauf, dass sich die Einfügemarke in der gewünschten Prozedur befindet, damit Access weiß, welche Prozedur es ausführen soll.

    Das funktioniert allerdings nur, wenn der Aufruf der Prozedur keinerlei Parameter erfordert. Falls dies doch der Fall ist, bleibt Ihnen die Möglichkeit, die Prozedur über das Testfenster zu starten. Das Testfenster erreichen Sie entweder über den Menübefehl Ansicht ( Testfenster oder über die Tastenkombination [Strg]+[G]. Geben Sie hier den Prozedurnamen, gefolgt von den erforderlichen Parametern in der unteren Hälfte des Fensters ein und betätigen Sie die Eingabetaste, um die Prozedur zu starten. Be-achten Sie, dass Sie bei privaten Prozeduren den Namen des Moduls mit einem Punkt getrennt voranstellen (z. B. modTest.TextAnzeigen). Wenn Sie Prozeduren aus Berichts- oder Formularmodulen ausführen möchten, muss das entsprechende Objekt geöffnet sein, zudem muss es sich um eine öffentliche Prozedur handeln.

    Nun haben Sie das erforderliche Werkzeug, um sich an die Beispiele heranzuwagen.

    Fehlerbehandlung von Laufzeitfehlern

    Die Programmiersprache VBA bietet dem Entwickler die Möglichkeit, auf Laufzeitfehler in angemessener Weise zu reagieren. Das bedeutet, dass Sie Access anweisen können, beim Auftreten eines bestimmten Fehlers in eine Fehlerbehandlungsroutine zu springen, welche dann überprüft, um welchen Fehler es sich handelt, und die entsprechenden Maßnahmen ausführt.

    Die folgenden Anweisungen stellen das "Gerippe" einer Prozedur zur Fehlerbehandlung dar:

    Sub <Prozedurname> (<Parameterliste>)

        On Error Goto <Sprungmarke>

        [<Anweisungen>]

    <Sprungmarke>:

           <Anweisungen zur Fehlerbehandlung>

        Exit Sub

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    Verwandte Beiträge:

    Fehlerverwaltung mit Online-Komponente

    VBA-Fehlerbehandlung revolutioniert

    Debugging im VBA-Editor

    Von Access nach MySQL, Teil 2

    Tools für den VBA-Editor

    Defekte Verweise: Ursachen und Lösungen

    Fehlerdokumentation

    VBA-Code mit Doxygen dokumentieren

    Effizientes Codieren

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.