Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: KonradR am Januar 25, 2025, 08:23:25

Titel: Fehlerbehandlung greift nicht
Beitrag von: KonradR am Januar 25, 2025, 08:23:25
Hallo liebe Accessfreunde,

ich möchte den Fehler 3022 abfangen. Dazu habe ich beim Ereignis BEFORE-Update des betreffenden Formulars folgende Testprozedur eingefügt:
Private Sub Form_BeforeUpdate(Cancel As Integer)
    MsgBox Me.cboProdukt.Value
   
    On Error GoTo FehlerNummerPruefen
   
FehlerNummerPruefen:
        MsgBox "Hallo hier ist Fehler " & Err.Number
End Sub
Allerdings wird die Meldung "Hallo hier ist Fehler 0" angezeigt und dann tritt der Fehler doch auf. Wie kann ich ereichen, dass der Fehler 3022 angezeigt wird, wenn er auftritt?
Titel: Re: Fehlerbehandlung greift nicht
Beitrag von: Knobbi38 am Januar 25, 2025, 12:21:08
Hallo Konrad,

das ist doch keine vollständige Fehlerbehandlung! Gehe einfach mal im Einzelschritt diesen Code durch, dann wirst du selber sofort auf dein Problem stoßen, was da falsch läuft.

Den Fehler 3022 dürftest du wahrscheinlich nur im Form_Error Ereignis abfangen können, da es sich um einen Verstoß gegen einen SQL Constraint handelt, z.B. einem eindeutigen Index auf einem Feld.

Gruß Knobbi38

https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/on-error-statement (https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/on-error-statement)
Titel: Re: Fehlerbehandlung greift nicht
Beitrag von: KonradR am Januar 25, 2025, 12:26:31
Zitat von: knobbi38 am Januar 25, 2025, 12:21:08Den Fehler 3022 dürftest du wahrscheinlich nur im Form_Error Ereignis abfangen können, da es sich um einen Verstoß gegen einen SQL Constraint handelt, z.B. einem eindeutigen Index auf einem Feld.
Danke. Das habe ich auch gerade herausgefunden und so gelöst:
Hallo liebe Accessfreunde,

ich habe noch ein bisschen recherschiert und eine Lösung gefunden. (Hätte ich vorher machen sollen).
Diese Lösung hier funktioniert:
Private Sub Form_Error(DataErr As Integer, Response As Integer)

    If DataErr = 3022 Then
        Response = acDataErrContinue
        MsgBox "Form_Error_Hallo hier ist Fehler " & DataErr
    End If

End Sub

Zitat von: knobbi38 am Januar 25, 2025, 12:21:08https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/on-error-statement
Danke. Da habe ich einiges  weggelassen. Das schaue ich mir noch mal genauer an.