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.3.8 Benutzerdefinierte Fehlerbehandlung temporär ausschalten

13.3.9 Funktionale Fehlerbehandlung

Fehlermeldungen können auch zur Vereinfachung von Funktionalität verwendet werden. Wie das funktioniert, zeigen die beiden folgenden Beispiele.

Prüfen auf Duplikate und Einfügen von Daten auf einen Streich

Im ersten Beispiel erzeugt das Anfügen eines Wertes an eine Tabelle einen Fehler, wenn der Wert schon vorhanden und das Feld mit einem eindeutigen Index versehen ist.

Man könnte diesen Fehler umgehen, indem man zuvor prüft, ob der anzulegende Wert schon in der Zieltabelle enthalten ist. Das würde einen Zugriff auf die Zieltabelle erfordern, das anschließende Hinzufügen des Datensatzes einen weiteren.

Den ersten Zugriff können Sie sich sparen, indem Sie den Datensatz einfach direkt hinzufügen und den im Falle eines doppelten Datensatzes auftretenden Fehler entsprechend behandeln. Das folgende Listing zeigt, wie das aussehen kann. Dort ist eine Fehlerbehandlung wie oben beschrieben eingebaut, die im Auswertungsteil prüft, ob der ausgelöste Fehler die Nummer 3022 hat. Dies ist die Nummer des Fehlers, der beim Hinzufügen von bereits vorhandenen Werten in ein eindeutiges Feld auftritt. Statt der von Access ausgegebenen Standardmeldung (siehe Abbildung 13.14) erhält der Benutzer der Anwendung eine deutlich aussagekräftigere Meldung (siehe Abbildung 13.15).

Public Function FirmaAnfuegen(strFirma As String)
    On Error GoTo FirmaAnfuegen_Err
    Dim db As DAO.Database
    Set db = CurrentDb
    db.Execute "INSERT INTO tblFirmen(Firma) VALUES('" _
        & strFirma & "')", dbFailOnError
'Fehlerbehandlung
FirmaAnfuegen_Exit:
    'Restarbeiten
    Set db = Nothing
    Exit Function
FirmaAnfuegen_Err:
    If Err.Number = 3022 Then
        MsgBox "Die Firma ist bereits vorhanden. " _
            & "Bitte geben Sie einen anderen Firmennamen ein."
    End If
    GoTo FirmaAnfuegen_Exit
End Function

Listing 13.3: Routine mit einer zielgerichteten Fehlerbehandlung

Vorhandensein von Objektinstanzen per Fehlerbehandlung prüfen

Eine andere Möglichkeit, die Fehlerbehandlung als Ersatz komplexerer Funktionalität zu nutzen, ist folgende. Hier soll eine Instanz eines Objekts erzeugt werden, sofern noch keine Instanz dieses Objekts vorhanden ist. Dazu greift man einfach auf die benötigte Instanz zu und prüft, ob daraus ein Fehler resultiert. Das ist der Fall, wenn das Objekt noch nicht existiert; anderenfalls erzeugt der Zugriff keinen Fehler.

Abbildung 13.14: Fehler beim Anfügen eines doppelten Wertes in ein Feld mit eindeutigem Index

Abbildung 13.15: Benutzerdefinierte Fehlermeldung als Ersatz für die Meldung aus Abbildung 13.14

Die folgende Routine versucht, mit der GetObject-Anweisung auf eine bestehende Instanz von Word zuzugreifen. Durch die vorherige On Error Resume Next-Anweisung läuft die Prozedur auf jeden Fall weiter, egal ob ein Fehler auftritt oder auch nicht.

Ob es einen Fehler gab, wird in der nächsten Zeile geprüft: Die Fehlernummer 429 deutet darauf hin, dass die Zuweisung des Objekts fehlgeschlagen ist, worauf eine neue Instanz erzeugt wird. Wenn Word auf dem Rechner gar nicht installiert ist, erzeugt auch dies einen Fehler mit der Nummer 429, der mit einer entsprechenden Fehlermeldung quittiert wird.

Zwischendurch müssen Sie das Err-Objekt übrigens immer wieder initialisieren, da sonst auch die Fehlernummer beibehalten wird. Dazu können Sie die Clear-Methode des Err-Objekts verwenden, aber auch eine folgende On Error-Anweisung initialisiert das Err-Objekt.

Public Sub ZugriffAufWord()
    Dim objWord As Object
    On Error Resume Next
    Set objWord = GetObject(, "Word.Application")
    If Err.Number = 429 Then
        'Err-Objekt initialisieren
        On Error Resume Next

        Set objWord = CreateObject("Word.Application")
        If Err.Number = 429 Then
            Msgbox "Word ist auf diesem Rechner nicht installiert", _
                vbCritical
        End If
    End If
    On Error GoTo 0
    objWord.Visible = True
End Sub

Listing 13.4: Word-Instanz holen und bei Fehler neu erstellen

Nächster Abschnitt:

13.3.10 Benutzerdefinierte Fehler

© 2006-2008 André Minhorst Alle Rechte vorbehalten.