[ normandija @ 17.08.2010. 12:21 ] @
Imam par polja gde su sifre u pitanju pa sam htio da postavim validator koji ce onemoguciti unosenje neodgovarajucih karaktera. Pokusao sam to na ovaj nacin medjutim zadnji uslov ne funkcionise dobro i izbacuje mi access-ovu poruku o gresci. Inace treba onemoguciti sve druge karaktere sem brojeva i naravno polje ne smije biti prazno



Code:

Private Sub Sifra_racunara_txt_LostFocus()
    If IsNull(Sifra_racunara_txt) Then
    
       DoCmd.SetWarnings False
       
       MsgBox "Niste unijeli šifru racunara!"
       DoCmd.SetWarnings True
       Sifra_racunara_txt.SetFocus
       
 Else
       
    If (Sifra_racunara_txt) < 0 Then
        
       DoCmd.SetWarnings False
       
       MsgBox "Šifra racunara ne može biti negativan broj!"
       DoCmd.SetWarnings True
       Sifra_racunara_txt.SetFocus
       
 Else
 
    If Not IsNumeric(Sifra_racunara_txt) Then
         
       DoCmd.SetWarnings False
       
       MsgBox "Šifra racunara mora biti broj!"
       DoCmd.SetWarnings True
       Sifra_racunara_txt.SetFocus
       
    
       
    Exit Sub
        
    End If
    End If
    End If
       
End Sub


[Ovu poruku je menjao normandija dana 17.08.2010. u 14:57 GMT+1]

[Ovu poruku je menjao normandija dana 17.08.2010. u 14:58 GMT+1]
[ Zidar @ 17.08.2010. 14:00 ] @
AKo su podaci zaista brojevi, postavi da je data type za polje neki numericki tip.

Ako je polje text, pa se dozvoljavaju sanmo brojevi, recimo maticni broj, onda mozes da se igras sa LIKE, na primer u VAlidation rule stavis nesto kao
[Code]
NOT LIKE '*[A,Z]*'
[\code]
Ponudjeni izraz ne dozvoljava slova, ali mogu da prodju brojevi i specijalni znaci. 123-45 je OK. A123 nece proci.


A moze i nesto ovako, mada je bolje resiti sa LIKE i na nivou tabele.

'Add 1 TextBox To Your Form.
'Insert the following code to your form:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 47 Or KeyAscii > 57 Then KeyAscii = 0
End Sub

[ Zidar @ 17.08.2010. 14:14 ] @
Vise o tome kako se sa LIKE vrsi validacija, imas ovde

http://office.microsoft.com/en...like-operator-HP001032253.aspx

http://office.microsoft.com/en...x?CTT=5&origin=HP001032253

i narocito ovo

http://www.devguru.com/technologies/jetsql/quickref/like.html
[ normandija @ 18.08.2010. 06:40 ] @
ti podatka,tj tip polja u tabeli je postavljen kao Number pa me zanimalo samo na koji nacin preko VB mogu da zabranim unos svih mogucih znakova sem brojeva ...
[ pmiroslav @ 18.08.2010. 07:27 ] @
Ja sam primjetio da ako tip polja u tablici postaviš kao Number, sam Access ti ne dozvoljava da uneseš bilo kakav znak osim broja.
[ sule99 @ 18.08.2010. 08:01 ] @
mislim da se to može riješiti sa maskom...

ja na jednoj formi koristim matični broj koji može biti samo znamenke i pod opcijom input mask za to polje imam sljedeću 99999999;0;_

ima različitih kombinacija, pa trebaš viditi šta ti treba (u helpu pogledaj malo textbox.inputmask property)

:)
[ smal @ 18.08.2010. 10:20 ] @
Input mask može da bude koristan samo ako je broj cifara fiksan i unapred poznat, kao za JMBG ili PIB na pr. Za sve ostale situacije, kao što je unos količina, koje mogu biti i celi i decimalni brojevi i sl, ne vrši posao.

Po meni, najefikasniji način je blokiranje nenumeričkih tastera If KeyAscii uslovom datom na početku teme, jer tako već na startu korisnik brzo ukapira da ne može da ukuca pogrešne karaktere. Svaka obrada greške se dešava naknadno, kada su slova već otkucana, a Msgbox brzo dosadi i iritira pošto su tipfeleri česti... Zaključani tasteri su zato idealno rešenje.
[ sule99 @ 18.08.2010. 11:10 ] @
smal, u pravu si potpuno. No maskom možeš staviti raspon do koliko želiš znamenaka(npr. 20 bi mislim njemu bilo dovoljno), bez vodečih nula i samo brojevi. I ako netko krene tipkat slova, ništa se se događa, ni msgbox ni ništa drugo, jednostavno ne može se upisati. a puno je jednostavnije i bez kodiranja. to je samo neko ovako moje mišlljenje :) ako ne treba s vodečim nulama, onda mislim da upisuje 00000 zavisi do koliko znameni mu ide šifra najduža... ovo sve pišem napamet, ali mislim da radi :)
[ normandija @ 18.08.2010. 11:45 ] @
Resio sam sa
Code:

Private Sub Sifra_racunara_txt_KeyPress(KeyAscii As Integer)
    If KeyAscii < 47 Or KeyAscii > 57 Then
    
       DoCmd.SetWarnings False
       MsgBox "Sifra ne moze sadrzati slova i specijalne znakove!"
       
       DoCmd.SetWarnings True
        
   
     Exit Sub
     
     End If
End Sub


ali recimo kad upisem ne dozvoljeni karakter,recimo - ili slovo neko,on mi baci porukicu da su slova zabranjena,ali kad kliknem na Backspace da obrisem slovo on opet smara sa porukicom Slova nisu dovoljena,samo me zanima kako to resiti da se ne pojavljuje poruka na brisanje karaktera
[ smal @ 18.08.2010. 12:35 ] @
Nedostaje ti par redova, odnosno nisi mu rekao šta da radi ako se pritisne nedozvoljeno dugme, a i ne treba DoCmd.SetWarnings. Dakle kod treba da izgleda ovako:
Code:

If KeyAscii = 8 Or KeyAscii = 13 Then
    Else
        If KeyAscii < 48 Or KeyAscii > 57 Then
            KeyAscii = 0
            MsgBox "Šifra ne može sadržati slova i specijalne znakove", vbCritical, "Obaveštenje"
            
        End If
End If

[ Zidar @ 18.08.2010. 16:07 ] @
Ama ljudi, Miroslav lepo kaze "...ako tip polja u tablici postaviš kao Number, sam Access ti ne dozvoljava da uneseš bilo kakav znak osim broja. "

Resavate problem koji ne postoji.
[ normandija @ 19.08.2010. 12:57 ] @
ok,slazem se,ali kako da zamijenim onu njegovu default-nu poruku o gresci ??
[ Zidar @ 19.08.2010. 13:58 ] @
Citat:
ok,slazem se,ali kako da zamijenim onu njegovu default-nu poruku o gresci ??

To je vec drugaciji problem.

Ta greska ima svoj broj, iako se ne vidi mozda na poruci. Ako se vidi, zapisi taj broj na parce papira.

Ako se ne vidi, zapsis poruku, prepisi poruku onako kako pise. Onda id na temu "Baza znanja" i iskopaj tamo poruku gde pise kako se izlistavaju u tabelu sve Accesiove JET greske. Pretragom delova teksta koji si zapisao, pronandji poruku i vidi njen broj.

Onda otvori form properties i idi idi na form ERROR event (na dnu je liste). Klikni Help i videces kako se Error event koristi. A imas i negde na forumu, ovde, pisao sam bar 2-3 puta o tome, (ja nazalost ne umem da pretrazujem forum, pa ti ne mogu reci gde je to).

Uglavnom, formin error event ti dozvoljava da uhvatis greske koje nisu run-time, nisu programske. To su greske za koje ne dobijes broj na poruci (unos duplikata, narusavanje ref. integriteta, ovo sto se tebi desava i slicno). U form error eventu imas opciju da izbegnes originalnu poruku i da je zamenis sopstvenom.

Sad an posao, pa kad zapnes, ti se javi.


A bilo bi stvarno korisno da prilozi bazu sa test podacima, lakse je pomoci kad vidimo problem nego kad nam objasnjavas. Ima te u 4-5 tema i nigde nisi prilozio nista osim screen-shot koda, koji nije dovoljan. Pomisli malo da i mi nemamo beskonacno vremena da pravimo baze sa primerima koji bi ti pomogli.

Ako ti nemas vremena da podesis svoju 'tajnu' bazu tako da je mozemo videti, zasto bi mi imali vremena da pravimo primere? Tebi treba pomoc, a ne nama.
[ pmiroslav @ 19.08.2010. 14:12 ] @
Možda za početak da pokušaš ovako:
U formi u kojoj upisuješ podatak, na događaj On Error upiši

MsgBox "Upisali ste pogrešan podatak", vbInformation
Response = 0 'Isključuje Access poruku
[ smal @ 19.08.2010. 14:39 ] @
I šta je onda bolje - da program javlja grešku kad korisnik već unese pogrešne podatke, ili da mu se odmah na startu ne dozvoli da greši?
[ Trtko @ 19.08.2010. 17:30 ] @
O tome bi se dalo raspravljati, naravno da je bolje da javiš korisniku poruku koju će razumjeti.
No greške mogu biti drugačijeg tipa , pa ponekad je potrebno i provjeravati što unaša korisnik.

npr, Ima input, tj unos gdje mora unjeti dužinu trupca, umjesto 4 m zabunom ukuca 40 m
što naravno nije moguće ..... itd , stoga sve ovisi o tebi, koliko želiš da ti je dobar PROGRAM
[ normandija @ 20.08.2010. 12:45 ] @
ma kakva tajna covece,evo zakacio sam bazu pa pogledaj. Da mi je da ne zapetljavam mnogo to,nego jednostavno da kad krene da unosi recimo slova odmah izbaci poruku o gresci,ja sam pokusao sa ascii da to uradim vidjecete u bazi,ali recimo ako ukuca slobo on baci poruku,a kad kliknem backspace da obrisem karakter opet se pojavi poruka,pa to malo dosadno,pa ako mozete pogledati malo detaljnije taj primjer. i nece da mi vrati fokus na polje nad kojim se desila greska ima i to u kodu,pa pogledajte,evo zakacio sam

Zakacena baza
[ Zidar @ 20.08.2010. 13:43 ] @
Moze li da zakacis bazu uz poruku, bez Rapid Share? ARJ ili ZIP
[ Getsbi @ 20.08.2010. 14:44 ] @
Ako neko nezna da zakači poruku neka pogleda u gornjem meniju FAQ 22.
[ smal @ 20.08.2010. 14:55 ] @
@normandija

Samo skloni znak & iz Input Mask, i na On Key Press stavi kod koji sam postavio gore (zahvaliti Zoranu Eremiji), i biće sve OK.
[ normandija @ 23.08.2010. 06:43 ] @
Citat:

@normandija

Samo skloni znak & iz Input Mask, i na On Key Press stavi kod koji sam postavio gore (zahvaliti Zoranu Eremiji), i biće sve OK.



hvala mnogo drug,resio sam....kako si rekao falilo mi je par redova koda da radi kako treba :)