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

Benutzerdefinierte Fehler

Eine Fehlerbehandlung in einer VBA-Prozedur dient oft dazu, dem Benutzer eine differenzierte Fehlermeldung statt einer der Access-eigenen Fehlermeldungen zu liefern, wenn etwas schiefluft. Leider wird diese Mglichkeit auch nur dazu verwendet - und nicht etwa, um auch anwendungsspezifische Fehler zu behandeln, was eine sehr sinnvolle Erweiterung wre.

Beispieldatenbank

Das nachfolgend beschriebene Beispielformular finden Sie in der Beispieldatenbank AccessSQLDotNet.mdb unter dem Formularnamen frmBenutzerdefinierteFehler.

Was sind benutzerdefinierte Fehler?

Benutzerdefinierte Fehler sind solche Fehler, die nicht von Access selbst ausgelst werden. Dabei kann es sich beispielsweise um Fehler handeln, die durch die Eingabe eines falschen Wertes in ein Textfeld ausgelst werden. Im vorliegenden Beispiel soll der Inhalt eines Textfeldes daraufhin kontrolliert werden, ob er mit einer Zahl beginnt. In dem Fall soll ein Fehler ausgelst werden. Das Formular sieht wie in Abbildung 1 aus. Dort sehen Sie auch gleichzeitig die Meldung eines benutzerdefinierten Fehlers.

Abbildung 1: Beispiel eines benutzerdefinierten Fehlers

Fehler auslsen

Das Auslsen eines benutzerdefinierten Fehlers erfolgt ber die Raise-Methode des Err-Objekts. Diese Methode erwartet drei Parameter: die Fehlernummer, die Fehlerherkunft sowie die Fehlermeldung.

Der Clou ist die Zusammenstellung der Fehlernummer: Ein bestimmte Fehlerbereich ist durch die Access-eigenen Fehlermeldungen schon vergeben. Daher addiert man zu der Fehlernummer seines eigenen Fehlernummernkreises die Konstante vbObjectError hinzu (so wird kein eventuel schon belegter Fehler gemeldet) und erhlt damit eine mit hoher Wahrscheinlichkeit unbenutzte Fehlernummer.

If IsNumeric(Left(Me.txtName, 1)) Then

    Err.Raise 1000 + vbObjectError, _

    "Namenseingabe", _

    "Der Name darf nicht mit einer Zahl beginnen."

End If

Anschlieend bei der Behandlung des Fehlers muss man diese Konstante natrlich wieder abziehen:

MsgBox "Fehler-Nummer: " & Err.Number - vbObjectError & vbCrLf _

    & "Fehler-Beschreibung: " & Err.Description, , _

    Err.Source

Die komplette Prozedur fr die berprfung der im Textfeld eingegebenen Zeichenkette sieht folgendermaen aus. Beachten Sie, dass die Fehlerbehandlung durch die On Error...-Zeile erst scharfgeschaltet werden muss:

Private Sub cmdNamePruefen_Click()

    On Error GoTo cmdNamePruefen_Click_Err

    If IsNumeric(Left(Me.txtName, 1)) Then

        Err.Raise 1000 + vbObjectError, _

        "Namenseingabe", _

        "Der Name darf nicht mit einer Zahl beginnen."

    End If

cmdNamePruefen_Click_Exit:

    Exit Sub

cmdNamePruefen_Click_Err:

    MsgBox "Fehler-Nummer: " & Err.Number - vbObjectError & vbCrLf _

        & "Fehler-Beschreibung: " & Err.Description, , _

        Err.Source

    GoTo cmdNamePruefen_Click_Exit

End Sub

© 2003-2015 André Minhorst Alle Rechte vorbehalten.