Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Preverjanje Accessovega obrazca s kontrolnikom WklValidator

Preverjanje Accessovega obrazca s kontrolnikom WklValidator

Polja z besedilom na Accessovem obrazcu (obrazcu za urejanje ob seznamu, pogovornem oknu ali katerem koli vezanem obrazcu) preverite s pravili za posamezna polja in za celoten zapis, napake prikažite ob poljih in v povzetku ter preprečite, da bi se shranil zapis, ki krši pravilo.

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

Pregled rešitve

  • En kontrolnik na obrazcu. WKL Validator (kontrolnik ActiveX) vstavite tja, kjer naj bo povzetek, na primer pod polja. Dokler ni napak, ne nariše ničesar.
  • Prazen modul. Lastnost obrazca Ima modul nastavite na Da. Access dogodke obrazca posreduje kontrolniku samo, če ima obrazec modul; zadošča prazen. Lastnosti dogodkov, ki jih potrebuje, preverjalnik sam nastavi na [Dogodkovna procedura].
  • Pravila na straneh oblikovalnika Pravila polj in Pravila zapisa ali kot JSON v Rules: za polje required, maxLength, pattern, min, max, valueList, text, po želji when (pravilo velja le, dokler ima drugo polje eno od navedenih vrednosti); za zapis exactlyOne, atLeastOne, atMostOne prek več polj.
  • Kaj vidi uporabnik: ko zapusti polje, ki krši pravilo, fokus ostane v njem; polje dobi rdečo obrobo, sporočilo pa se prikaže kot njegov zaslonski namig; preverjalnik prikaže „Napak: 2 – …“, klik nanj pa skoči na prvo napako. Shranjevanje zapisa, ki krši pravilo, je zavrnjeno – tudi shranjevanje, ki ga Access izvede, ko se fokus z zasidranega obrazca za urejanje vrne na njegov seznam. Okna s sporočili se ne odpirajo.

Izvedba

Obrazec za urejanje frmIdentity (vezan na tblIdentity, s praznim modulom) je zasidran ob seznamu. Polje Login sestavljajo male črke in je obvezno za vrsto „Login“; identiteta navaja natanko eno od treh možnosti: osebo, račun Windows ali ključ:

' Once, in design view (or on the designer's pages); the rules are saved with the form.
Forms!frmIdentity!Validator1.Object.Rules = _
    "{""fields"":[" & _
    "{""field"":""Login"",""pattern"":""[a-z]+"",""text"":""Prijavno ime samo z malimi črkami""}," & _
    "{""field"":""Login"",""required"":true,""when"":{""field"":""Kind"",""equals"":""Login""}}]," & _
    """records"":[{""exactlyOne"":[""PersonId"",""Account"",""KeyId""],""text"":""Navedite natanko en vir""}]}"

Lasten gumb za shranjevanje v povzetku sporoči tudi zavrnitev podatkovne storitve:

Private Sub cmdShrani_Click()
    On Error GoTo Zavrnjeno
    If Not Me!Validator1.Object.Validate Then Exit Sub   ' shows what is missing
    Me.Dirty = False
    Exit Sub
Zavrnjeno:
    Me!Validator1.Object.SetError "", Err.Description
End Sub

Pogosti vzorci:

Poljepattern
Identifikator, kot ga poimenuje SQL Server (brez vezaja)[A-Za-z_][A-Za-z0-9_]*
Omrežje IPv4 v zapisu CIDR(25[0-5]|2[0-4]\d|1?\d?\d)(\.(25[0-5]|2[0-4]\d|1?\d?\d)){3}/(3[0-2]|[12]?\d)
Poštna številka (Slovenija)[0-9]{4}

V JSON je vsaka poševnica nazaj zapisana dvakrat (\\d).

Opombe

  • Brez modula preverjalnik sam ne preverja ničesar. To sporoči v svojem pravokotniku („Preverjanje neaktivno …“), IsConnected pa je False; Validate, poklican iz kode, še vedno deluje. Glejte Preverjalnik ničesar ne preveri.
  • Kako so poimenovana polja. field je ime kontrolnika ali polje, ki ga kontrolnik prikazuje (njegov vir kontrolnika; izračunani kontrolniki nikoli ne štejejo); enako velja za when.field in polja pravil zapisa. Polje brez kontrolnika se prebere iz zapisa in preveri, vendar ni označeno. Sporočila polje poimenujejo z napisom pripete oznake kontrolnika – oznaka, prosto postavljena zraven, ne šteje.
  • Vzorci se vedno ujemajo s celotnim besedilom (^/$ ni treba), so regularni izrazi .NET (\\p{L} za katero koli črko v JSON), preverjajo samo vnesene vrednosti in če preverjanje traja dlje kot četrt sekunde, vzorec velja za neujemajoč.
  • Lastnosti dogodkov, ki vsebujejo makro ali izraz, ostanejo nespremenjene; ta dogodek nato prejme makro, ne preverjalnik. Uporabite [Dogodkovna procedura] in makro pokličite iz procedure.
  • Napake vira podatkov pri shranjevanju – pravilo za veljavnost tabele, podatkovna storitev, ki zapis zavrne prek svojega gonilnika ODBC – se prikažejo v povzetku namesto v oknu s sporočilom Accessa (HandleDataErrors, privzeto vklopljeno), z razlogom gonilnika – pri shranjevanju, ki ga Access izvede med uporabnikovim dejanjem. Shranjevanje, ki ga sproži vaša koda (Me.Dirty = False in tudi premik fokusa s kodo, na primer area!grdMain.SetFocus), napako namesto tega sporoči tej kodi, kot v vsakem Accessovem obrazcu (na primer napako 3316 pravila za veljavnost tabele ali 3155 gonilnika ODBC, ki zapis zavrne); besedilo podajte metodi SetError kot zgoraj. Glejte Zavrnjeno shranjevanje se ne pokaže v povzetku preverjalnika.
  • Nov zapis, shranjen zapis in razveljavitev počistijo napake; ClearErrors kadar koli obnovi obrobe in zaslonske namige.
  • Preverjanja, ki jih ne morete zapisati kot pravilo, sodijo v dogodek ValidateRecord (Message, Cancel) – za razliko od pravil potrebuje kodo v modulu.
  • Gradnja s kodo: preverjalnik vstavite kot gradnik kontrolnika, ne s CreateControl – glejte Vstavljanje kontrolnikov WKL v obrazce s kodo.
  • Preverjalnik deluje na Accessovih obrazcih; na uporabniških obrazcih (UserForm) v Excelu in Wordu nima obrazca, ki bi ga preverjal.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/check-a-form-with-the-validator.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille