Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » troubleshooting » Zavrnjeno shranjevanje se ne pokaže v povzetku preverjalnika

Zavrnjeno shranjevanje se ne pokaže v povzetku preverjalnika

Vir podatkov zavrne zapis – pravilo za veljavnost tabele ali podatkovna storitev, ki ga zavrne prek svojega gonilnika ODBC – in zapis ostane neshranjen, povzetek preverjalnika WklValidator pa ostane prazen (ErrorSummary je prazen, ErrorCount je 0). Namesto tega do kode VBA pride številka napake, kot je 3155 ali

Okolje

WKL Forms Object Library 1.31 in novejša, HandleDataErrors = True. Access za Microsoft 365, 32-bitni; druge različice niso podprte.

Vzrok

Preverjalnik tako napako prejme prek dogodka Error obrazca (Form_Error). Access ta dogodek sproži samo pri shranjevanju, ki ga izvede na lastno pobudo med dejanjem uporabnika: uporabnik se premakne na drug zapis, zapre obrazec ali iz obrazca za urejanje klikne v drug del okna. Shranjevanje, ki ga začne koda VBA, napako sporoči tej kodi kot napako med izvajanjem, Access pa dogodka Error ne sproži:

  • Me.Dirty = False ali RunCommand acCmdSaveRecord;
  • premik fokusa s kodo, na primer area!grdMain.SetFocus iz zasidranega obrazca za urejanje: shranjevanje, ki ga Access ob tem izvede, pripada kodi, ki je premaknila fokus.

To velja za obe vrsti zavrnitve: za pravilo za veljavnost tabele (napaka 3316) in za podatkovno storitev, ki zapis prek svojega gonilnika ODBC zavrne s HTTP 422 (napaka 3155). V obeh primerih zapis ostane neshranjen in spremenjen (Dirty), napaka pride do kode, preverjalnik pa ne prejme dogodka Error, zato njegov povzetek ostane prazen.

Rešitev

  1. Napako ujemite v kodi, ki shranjuje ali premika fokus, in njeno besedilo predajte preverjalniku:

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

    Pri napaki ODBC je Err.Description splošno besedilo Accessa o neuspelem klicu ODBC (v nemškem Accessu „ODBC-Aufruf fehlgeschlagen“); vzroki gonilnika so v DBEngine.Errors.

  2. Zavrnjeno shranjevanje, ki ga Form_Error nikoli ne vidi, je začela koda (Me.Dirty = False, DoCmd.RunCommand acCmdSaveRecord): napako obravnavajte tam, kjer koda shranjuje.
sl/wiki/msaccess/comctl/troubleshooting/data-error-not-in-validator-summary.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille