Color scheme: Dark
You are here: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Preverjanje vnosa v celice

Preverjanje vnosa v celice

Zavrnite vrednost, ki jo uporabnik vnese v celico kontrolnika WklGrid, WklTreeList ali WklGantt, kadar krši pravilo, razlog prikažite ob celici in se odzovite, ko je vrednost shranjena.

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

Pregled rešitve

  • Pravila stolpca za to, kar Access ponuja za posamezno polje: Required, MaxLength (privzeto velikost polja iz vira zapisov), Pattern (regularni izraz), MinValue in MaxValue, ValueList ter ValidationText za lastno sporočilo. Nastavite jih na strani oblikovalnika Stolpci (razdelek izbranega stolpca) ali v kodi.
  • Kaj se zgodi: vrednost, ki krši pravilo, se ne zapiše. Kot pri pravilu za veljavnost v Accessu celice ni mogoče zapustiti, vendar ni okna s sporočilom: celica prikaže rdeč okvir, simbol napake in sporočilo kot zaslonski namig, vrstica napak pod zapisi pa napake prešteje („1 napaka“ ipd.) in pomakne na prvo. Esc zavrže vnos. ValidateMode določa, kdaj se celica preveri: ko jo zapustite (privzeto), med tipkanjem kot oznaka ali pri vrstici novega zapisa šele, ko se vrstica shrani.
  • Lastna pravila – čez več polj ali z iskanjem v drugi tabeli – v ValidateCell: popravite NewValue, zavrnite s Cancel = True in razlog navedite s SetError.
  • Po shranjevanju AfterCellUpdate; napake vira podatkov gredo v DataError, celica pa ohrani besedilo vira.

Izvedba

Pravila stolpcev, nastavljena enkrat v pogledu načrta ali v Form_Load:

Private Sub Form_Load()
    With Me!Grid1.Object
        .Columns("Stranka").Required = True           ' MaxLength 0: the field size applies
        .Columns("Oznaka").Pattern = "[A-Z]{2,4}"
        .Columns("Oznaka").ValidationText = "Dve do štiri velike črke"
        .Columns("Kolicina").MinValue = 1
        .Columns("Kolicina").MaxValue = 1000
        .Columns("Stanje").ValueList = "nov;aktiven;blokiran"
    End With
End Sub

Lastno pravilo čez dve polji, z razlogom ob celici:

Private Sub Grid1_ValidateCell(ByVal Key As Variant, ByVal Column As String, NewValue As Variant, Cancel As Integer)
    If Column = "Do" Then
        If Not IsNull(NewValue) And NewValue < Me!Grid1.Object.CellValue(Key, "Od") Then
            Cancel = True
            Me!Grid1.Object.SetError Key, "Do", "Datum „Do“ je pred datumom „Od“."
        Else
            Me!Grid1.Object.SetError Key, "Do", ""           ' an empty text removes the error
        End If
    End If
End Sub
 
Private Sub Grid1_AfterCellUpdate(ByVal Key As Variant, ByVal Column As String)
    Me!txtTotal = Me!Grid1.Object.SummaryValue("Kolicina")
End Sub

Opombe

  • Vrstica za nov zapis pred shranjevanjem preveri vse stolpce, tudi obvezno polje, ki ga uporabnik ni nikoli vnesel; vrstica se ne shrani, obdrži fokus in prikaže napake ob svojih celicah.
  • Obstoječi zapisi se shranjujejo celico za celico, zato se njihove celice v vsakem ValidateMode preverijo, ko jih zapustite.
  • Vrednosti, ki jih zapiše koda (CellValue = …), se ne preverjajo in ne sprožajo dogodkov; pravila veljajo za vnos uporabnika. UI Automation (ValuePattern.SetValue) se preveri kot tipkanje in se zavrne z E_INVALIDARG.
  • Bralniki zaslona sporočilo napovejo: celica ga sporoča kot svoje stanje in je za svoj obrazec neveljavna, vrstica napak pa je živo območje.
  • ErrorCount, ErrorSummary, ErrorText, GoToFirstError, ClearErrors in dogodek ValidationChange omogočajo, da napakam sledijo vaši lastni gumbi. Za preverjanja na obrazcu Access – na primer na obrazcu za urejanje mreže – uporabite `WklValidator`.
  • Urejanje je mogoče, kadar je AllowEditing True (privzeto) in stolpec ni ReadOnly; vrstic skupin ni mogoče nikoli urejati.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/validate-cell-input.txt · Last modified: by Wolfgang van der Stille