Barvna shema: Riviera
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Obravnava napak kontrolnikov WKL v VBA

Obravnava napak kontrolnikov WKL v VBA

Napake kontrolnikov WKL v kodi prestrezite tako, kot prestrezate napake Accessa, uporabnikom namesto pogovornega okna VBA prikažite smiselno sporočilo in sprostite objekte, ki jih hranite.

Zahteva WKL Forms Object Library 1.23 ali novejšo različico.

Pregled rešitve

  • Stalne številke. Vsak član kontrolnika ali objekta WKL, ki ne uspe, sproži napako med izvajanjem s stalno številko (Err.Number, konstante naštevanja WklErrorCode) in Err.Source = "WklForms"; Err.Description vsebuje besedilo za uporabnika v jeziku komponent ali lastno besedilo Accessa, če je zavrnil Access.
  • Številke zunaj WklErrorCode. Napaka, ki jo je sprožil Access, pride do klicatelja z Accessovo številko in besedilom; pomanjkanje pomnilnika je &H8007000E; vsaka druga napaka, ki je komponente niso pričakovale, je &H8000FFFF z besedilom „Notranja napaka v knjižnici WKL Forms Object Library“ in vrsto napake – sporočite jo dobavitelju. V Case Else ne predpostavljajte, da je vsaka številka konstanta wke.
  • On Error kot običajno. Napake obravnavajte z On Error GoTo v proceduri, ki pokliče člana, in se odločite po Err.Number.
  • Napake brez klicatelja – nalaganje, ki ne uspe, medtem ko kontrolnik riše, shranjevanje uporabnikovega urejanja, ki ga vir podatkov zavrne – pridejo v dogodek DataError kontrolnikov dreves in mrež ter kontrolnika WklTokenBox; Response = acDataErrContinue (0) prepreči lastno okno s sporočilom kontrolnika.
  • Objekti, ki jih hranite – WklToast v spremenljivki WithEvents, WklLinkManager, Recordset, ki ste ga podali kontrolniku –, se ob zapiranju obrazca sprostijo z Set ... = Nothing.
Err.NumberKonstantaPomen
&H80040301wkeNotConfiguredManjka vir podatkov ali obvezno polje
&H80040302wkeSourceErrorAccess je med branjem ali shranjevanjem sporočil napako (besedilo Accessa v Err.Description)
&H80040303wkeDuplicateKeyPodvojen ključ
&H80040304wkeCycleKrog v razmerju nadrejeni–podrejeni
&H80040305wkeKeyNotFoundNi vozlišča ali zapisa s tem ključem
&H80040306wkeInvalidValueNeveljavna vrednost ali neveljavna datoteka
&H80040307wkeNotAvailableUkaz trenutno ni na voljo (ni pogled obrazca ali ne za zapis s fokusom)

Izvedba

Ukazni gumb, ki izbriše izbrane zapise mreže, s sporočilom za primere, ki jih uporabnik lahko razume:

Private Sub cmdDelete_Click()
    On Error GoTo Failed
    Me!Grid1.Object.DeleteSelected
    Exit Sub
Failed:
    Select Case Err.Number
        Case wkeNotAvailable
            MsgBox "Bitte zuerst einen Datensatz auswählen.", vbInformation
        Case wkeSourceError
            MsgBox "Löschen nicht möglich: " & Err.Description, vbExclamation
        Case Else
            MsgBox "Fehler " & Hex(Err.Number) & " (" & Err.Source & "): " & Err.Description, vbCritical
    End Select
End Sub

Zavrnitev vira podatkov med uporabnikovim urejanjem, prikazana v lastni vrstici stanja obrazca namesto v polju s sporočilom:

Private Sub Grid1_DataError(ByVal DataErr As Long, ByVal Description As String, Response As Integer)
    Me!lblStatus.Caption = Description
    Response = acDataErrContinue
End Sub

Sproščanje tega, kar hrani obrazec:

Private WithEvents mToast As WklToast
 
Private Sub Form_Load()
    Set mToast = New WklToast
End Sub
 
Private Sub Form_Close()
    Set mToast = Nothing
End Sub

Opombe

  • Primerjajte s konstantami, ne z negativnimi desetiškimi števili: Err.Number za &H80040306 je v VBA -2147220730, konstante pa potrebujejo sklic na WKL Forms Object Library (Access ga nastavi, ko vstavite kontrolnik).
  • Napaka v dogodkovni proceduri, ki je ne obravnavate, prikaže pogovorno okno VBA za napako med izvajanjem, kot pri vsakem dogodku Accessa; napake obravnavajte tudi v dogodkovnih procedurah.
  • Koda, ki med potekajočim dogodkom istega kontrolnika pokliče člana: ukaz za zapis kontrolnika WklGrid, WklTreeList ali WklGantt se takrat izvede po dogodkovni proceduri, zato napaka med njegovim izvajanjem ne pride do kode, ki ga je poklicala; takoj se preveri le njegova razpoložljivost, ki ob klicu sproži wkeNotAvailable.
  • Besedila napak sledijo jeziku komponent (angleščina, nemščina, slovenščina, hrvaščina ali italijanščina; angleščina, kadar ne velja noben), tako kot preostali uporabniški vmesnik. Odločajte se po Err.Number, nikoli po besedilu: številka je v vseh jezikih enaka. Izbira jezika: Izbira jezika komponent.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/handle-errors-of-wkl-controls.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille