Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

13.4.2 Zeilen nummerieren

13.4.3 Einsatz der accessVBATools

Die vier Funktionen der accessVBATools helfen Ihnen dabei, Ihre Anwendungen mit einer professionellen Fehlerbehandlung und -dokumentation zu versehen. Das Tool liegt auf der Buch-CD in Form einer .dll-Datei unter dem Dateinamen Tools\accessVBATools.dll vor. Diese .dll-Datei kopieren Sie in ein Verzeichnis Ihrer Wahl (vorzugsweise c:\Windows\System32) und registrieren diese über den Ausführen ...-Dialog von Windows mit der Anweisung regsvr32.exe c:\Windows\ System32\accessVBATools.dll. Anschließend öffnen Sie die VBA-Entwicklungsumgebung erneut und finden die neue Symbolleiste sowie die Einträge im Kontextmenü vor.

Nummerierungen hinzufügen und entfernen

Mit den beiden Befehlen Modul nummerieren und Modul entnummerieren können Sie die Nummerierung nach Belieben hinzufügen und wieder entfernen - zumindest in der Entwicklungsphase. Das macht das Nummerieren besonders einfach: Wenn Sie die Anwendung testen, fügen Sie die Nummerierung hinzu, wenn Sie Änderungen am Code vornehmen, entfernen Sie die Nummerierung, ändern den Code und fügen die Nummerierung wieder hinzu.

Abbildung 13.17: accessVBATools im Einsatz

Abbildung 13.18: Aufruf der accessVBATools per Kontextmenü

Sobald Sie eine Anwendung einmal weitergegeben haben, müssen Sie eine unveränderte Kopie dieser Version behalten, um auf Fehlermeldungen reagieren zu können, die der Benutzer Ihnen mitteilt - sonst würden die Zeilennummern unter Umständen doch wieder nicht weiterhelfen.

Fehlerbehandlung hinzufügen

Die dritte Funktion der accessVBATools fügt einer Prozedur eine Fehlerbehandlung wie im folgenden Listing hinzu - in diesem Fall ausgehend von einem leeren Prozedurrumpf:

Public Sub Beispielfehlerbehandlung()
    On Error GoTo Beispielfehlerbehandlung_Err
'Fehlerbehandlung
Beispielfehlerbehandlung_Exit:
    'Restarbeiten
    Exit Sub
Beispielfehlerbehandlung_Err:
    Call Fehlerbehandlung("Fehlerbehandlung - Modul1 ", _
        "Beispielfehlerbehandlung", Erl, "Bemerkungen: ./.")
    GoTo Beispielfehlerbehandlung_Exit
End Sub

Listing 13.8: Eine ansonsten nackte Routine nach der Bestückung mit einer Fehlerbehandlung

Die Fehlerbehandlung entspricht weitgehend dem weiter oben vorgeschlagenen Muster. Einzige Ausnahme ist, dass keine Fehlermeldung per MsgBox-Anweisung ausgegeben, sondern eine Funktion namens Fehlerbehandlung aufgerufen wird - was eine passende Überleitung zur vierten Funktion ist.

Funktion zur Fehlerdokumentation hinzufügen

Die noch fehlende Funktion Fehlerbehandlung wird durch den letzten Eintrag der accessVBATools hinzugefügt - und zwar samt eigenem Standardmodul. Dieses hat den folgenden Inhalt:

Option Compare Database
Option Explicit

Private Declare Function GetComputerName Lib "kernel32.dll" _
    Alias "GetComputerNameA" (ByVal lpBuffer As String, _
    ByRef nSize As Long) As Long

Public Function Fehlerbehandlung(strModul As String, _
    strRoutine As String, lngZeile As Long, _
    Optional strBemerkungen As String)

    On Error Resume Next

    Open CurrentProject.Path & "\Fehler.log" For Append As #1

    Print #1, "Datum:             " & Format(Now, "yyyy-mm-dd, hh:nn:ss")
    Print #1, "Datenbankpfad:     " & CurrentDb.Name
    Print #1, "Modul:             " & strModul
    Print #1, "Routine:            " & strRoutine
    Print #1, "Benutzer:         " & CurrentUser()
    Print #1, "Rechner:            " & ComputerName()
    Print #1, "Fehlernummer:     " & Err.Number
    Print #1, "Fehlerbeschreibung: " & Err.Description
    Print #1, "Zeile:             " & lngZeile
    Print #1, "Bemerkungen:        " & strBemerkungen
    Print #1, ""
    Close #1
    Reset

    MsgBox "Es ist ein Fehler aufgetreten. " & vbCrLf _
        & "Weitere Informationen finden Sie in der Datei Fehler.log im " _
        & " Verzeichnis dieser Datenbank."
End Function

Function ComputerName() As String

    Dim strComputer As String
    Dim n As Long

    n = 255
    strComputer = String$(n, 0)
    Call GetComputerName(strComputer, n)
    ComputerName = Left(strComputer, n)

End Function

Listing 13.9: Diese Routinen legen einen Eintrag für eine Fehlermeldung in einer Textdatei an

Wenn Sie nach Anlegen dieses Moduls eine fehlerhafte und nummerierte Routine starten, die die Prozedur Fehlerbehandlung aufruft, zeigt Access die folgende Meldung an (siehe Abbildung 13.19).

Abbildung 13.19: Die Fehlerbehandlung sorgt beim Auftreten eines Fehlers für die Anzeige dieser Meldung

Die dort angegebene Datei sieht wie in Abbildung 13.20 aus. Die Datei enthält einige Informationen, die zum Auffinden der meisten Fehler führen sollten. Sie können die Fehlerbehandlung natürlich nach Belieben erweitern, um etwa Informationen über das verwendete Betriebssystem, die Office-Version und mehr zu extrahieren. Sie müssen dem Benutzer nur noch mitteilen, dass er Ihnen diese kleine Textdatei zusendet. Dazu können Sie leicht die in der Prozedur aus Listing 13.9 ausgegebene Meldung anpassen, etwa mit einer Erweiterung wie »Zum Beheben des Fehlers schicken Sie diese Textdatei bitte an «.

Sie sollten sich auch gut überlegen, ob Sie dem Anwender wirklich jeden sich ereignenden Fehler mit einer Meldung zu Gesicht bringen wollen. Erhält dieser häufig solche Meldungen, dann schwindet möglicherweise sein Vertrauen in die Anwendung und damit in Ihre Fähigkeiten. Eine Möglichkeit, dies zu umgehen, wäre etwa, am Ende der Fehlerbehandlungsroutine die Dateilänge des Fehlerlogs zu ermitteln (VBA.FileLen) und nur dann eine Meldung zu erzeugen, wenn diese Größe ein bestimmtes Limit wie etwa fünf Kilobyte erreicht hat.

Abbildung 13.20: Dokumentation eines Fehlers per Textdatei

Bemerkungen in der Fehlerbehandlung

Der Aufruf der oben beschriebenen Fehlerdokumentationsfunktion bietet einen Parameter namens Beschreibung an. Hier können Sie zusätzliche Informationen unterbringen - etwa um die Werte bestimmter Variablen innerhalb der fehlerhaften Routine auszugeben.

Mögliche Erweiterungen der Fehlerbehandlung

Wer regelmäßig mit Microsoft-Produkten arbeitet, ist vermutlich bereits einmal bei einem Programmabsturz mit der damit verbundenen Anfrage der Anwendung konfrontiert worden, nähere Informationen an Microsoft zu senden.

Solch eine Funktion ist natürlich auch für Access-Anwendungen denkbar. Die notwendigen Informationen könnten dabei via E-Mail (entweder über den vorhandenen E-Mail- Client oder direkt über die WinSock-Schnittstelle) oder auch durch automatischen Aufruf einer Internetseite mit entsprechenden Parametern übertragen werden. Leider würde die Ausarbeitung einer solchen Lösung den Rahmen dieses Kapitels sprengen.

Nächster Abschnitt:

13.5 Fehlerbehandlung in Formularen

© 2006-2008 André Minhorst Alle Rechte vorbehalten.