OK, ovako. Sve sto Zonic tvrdi je tacno, osim da Input Mask postavljen na polje tabele stiti od promena kroz rekordsete. Napravio sam tabelu sa poljem TextSaInputmask i u tabeli postavio za to polje InputMask na nekoliko devetki. Kao sto se i ocekuje, ne moze se ni uneti nesto sto nije cifra, jednostavno nece dalje. Ali ne kazuje ni zasto. Onda sam napisao funkciju:
Code:
Function UpdateInputMask()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
strSQL = "SELECT textSaInputMask FROM Clanovi WHERE Brc=1"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)
Debug.Print "Before Edit:", rs!TextSaInputMask
rs.Edit
rs!TextSaInputMask = "Zidar"
rs.Update
Debug.Print "After Edit", rs!TextSaInputMask
rs.Close
End Function
Funkciju sam izvrsio u debug window i don=bio ovo:
Code:
? UpdateInputMask()
Before Edit: Null
After Edit Zidar
Dakle, InputMask na tabeli
ne stiti od promena putem rekrdseta
Postavljanje Validation Rule property nza polje tabele
Onda sam otvorio tabelu Clanovi u design modu, odabrao polje TextSaInputmask modu i u Validation Rule property za polje samo ovo:
Code:
IsNumeric([TextsaInputmask])=True
.
U Validation text sam upisao "U ovo polje se mogu upisivati samo cifre!"
Kad sam iz debug prozora izvrsio funkciju UpdateInputMask(), dobio sam ovo:
Code:
? UpdateInputMask()
Before Edit: Null
i error message 3316, sa tekstom "U ovo polje se mogu upisivati samo cifre!". Kad ne postoji Validation Text, onda poruka bude 3317, na engleskom i kaze otprilike
Code:
"One or more values prohibited by validation rule 'IsNumeric([TextSaInputMsak]=True' set for Clanovi.TextSaInputMask. Enter the value that expresion set for this field can accecpt"
Naravno, sve poruke su imale opcije Debug/End/Help, posto funkcija nema error handling.
U praksi treba uraditi i jedno i drugo. Postavite Validation rule, a postavite i input mask na polju tabele. Kad dizajnirate formu, ako polje iz tabele navucete na formu, InputMask ce se automatski pojaviti na formi. Input mask ce da reaguje PRE validation rule. Vlidation rule ce pokriti sve slucajeve koje Input mask ne moze (rekordseti i verovatno action queries). Ako ste sigurni da se nece koristiti rekordseti za editovanje rekorda, ne morate da postavite validation rule na tabeli. Ali, nikad se ne zna....
I ako pisete bilo kakav kod, stavite error handling, da izbegnete End/Debug/help opcije.