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),MinValueinMaxValue,ValueListterValidationTextza 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.
ValidateModedoloč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: popraviteNewValue, zavrnite sCancel = Truein razlog navedite sSetError. - Po shranjevanju
AfterCellUpdate; napake vira podatkov gredo vDataError, 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
ValidateModepreverijo, 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 zE_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,ClearErrorsin dogodekValidationChangeomogoč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
AllowEditingTrue (privzeto) in stolpec niReadOnly; vrstic skupin ni mogoče nikoli urejati.
Sorodne teme
- Referenčni priročnik API (v angleščini): WklColumn (
Required,MaxLength,Pattern,MinValue,MaxValue,ValueList,ValidationText), WklTreeList (ValidateMode,SetError,ErrorCount,ValidateCell,ValidationChange), naštevanja (WklValidateMode)
sl/wiki/msaccess/comctl/how-to/validate-cell-input.txt · Last modified: by Wolfgang van der Stille