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 = FalsealiRunCommand acCmdSaveRecord;- premik fokusa s kodo, na primer
area!grdMain.SetFocusiz 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
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 SubPri napaki ODBC je
Err.Descriptionsplošno besedilo Accessa o neuspelem klicu ODBC (v nemškem Accessu „ODBC-Aufruf fehlgeschlagen“); vzroki gonilnika so vDBEngine.Errors.- Zavrnjeno shranjevanje, ki ga
Form_Errornikoli ne vidi, je začela koda (Me.Dirty = False,DoCmd.RunCommand acCmdSaveRecord): napako obravnavajte tam, kjer koda shranjuje.