Barvna shema: Svetla
Trenutno dejavna stran: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » troubleshooting » Ein abgelehntes Speichern erscheint nicht in der Zusammenfassung des Validators

Ein abgelehntes Speichern erscheint nicht in der Zusammenfassung des Validators

Die Datenquelle lehnt einen Datensatz ab – durch eine Gültigkeitsregel der Tabelle oder durch einen Datendienst, der ihn über seinen ODBC-Treiber zurückweist –, und der Datensatz bleibt ungespeichert, aber die Zusammenfassung des WklValidator bleibt leer (ErrorSummary ist leer, ErrorCount ist 0). Stattdessen erreicht eine Fehlernummer wie 3155 oder 3316 den VBA-Code.

Umgebung

WKL Forms Object Library ab 1.31, HandleDataErrors = True. Microsoft 365 Access, 32 Bit; andere Versionen werden nicht unterstützt.

Ursache

Der Validator erhält einen solchen Fehler über das Fehlerereignis des Formulars (Form_Error). Access löst dieses Ereignis nur bei einem Speichern aus, das es von sich aus während einer Benutzeraktion vornimmt: Der Benutzer wechselt zu einem anderen Datensatz, schließt das Formular oder klickt aus einem Bearbeitungsformular in einen anderen Teil des Fensters. Ein Speichern, das VBA-Code anstößt, meldet den Fehler diesem Code als Laufzeitfehler, und Access löst kein Fehlerereignis aus:

  • Me.Dirty = False oder RunCommand acCmdSaveRecord;
  • Verschieben des Fokus per Code, zum Beispiel area!grdMain.SetFocus aus einem angedockten Bearbeitungsformular: Das Speichern, das Access bei dieser Gelegenheit vornimmt, gehört zu dem Code, der den Fokus verschoben hat.

Das gilt für beide Arten der Ablehnung: eine Gültigkeitsregel der Tabelle (Fehler 3316) und einen Datendienst, der den Datensatz über seinen ODBC-Treiber mit HTTP 422 zurückweist (Fehler 3155). In beiden Fällen bleibt der Datensatz ungespeichert und geändert, der Fehler erreicht den Code, und der Validator erhält kein Fehlerereignis; seine Zusammenfassung bleibt deshalb leer.

Lösung

  1. Fangen Sie den Fehler in dem Code ab, der speichert oder den Fokus verschiebt, und übergeben Sie seinen Text an den Validator:

    Private Sub cmdSpeichern_Click()
        On Error GoTo Abgelehnt
        Me.Dirty = False
        Exit Sub
    Abgelehnt:
        Me!Validator1.Object.SetError "", Err.Description
    End Sub

    Bei einem ODBC-Fehler ist Err.Description der allgemeine Text von Access („ODBC-Aufruf fehlgeschlagen“); die Gründe des Treibers stehen in DBEngine.Errors.

  2. Ein abgelehntes Speichern, das Form_Error nie sieht, wurde von Code angestoßen (Me.Dirty = False, DoCmd.RunCommand acCmdSaveRecord): Behandeln Sie den Fehler dort, wo der Code speichert.
de/wiki/msaccess/comctl/troubleshooting/data-error-not-in-validator-summary.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille