Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Greske pri unosu datuma, koje je najbolje resenje?

[es] :: Access :: Greske pri unosu datuma, koje je najbolje resenje?

[ Pregleda: 2667 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bojan_mil
Bg

Član broj: 74014
Poruke: 100
212.200.213.*



Profil

icon Greske pri unosu datuma, koje je najbolje resenje?23.02.2008. u 17:47 - pre 195 meseci
Naime, zelim da izbegnem greske unosenja datuma u text box bez formatiranja text box-a ili raznin "kalendara", jer se u zavisnosti od korisnika mogu javiti razliciti oblici datuma koji unose korisnici.
Ideja mi je da za unos datuma koristim 8 text-boxo-va, od kojih su prva dva za dan, druga dva za mesec i ostala cetiri za godinu. Zanima me koliko je to dobro resenje i kako ga najbolje implementirati?
Da li neko zna neki dobar metod kojim bi se na slican nacin sprecile greske korisnika?
 
Odgovor na temu

lukeguy
Novi Sad

Član broj: 46545
Poruke: 470
*.com
Via: [es] mailing liste



+8 Profil

icon Re: Greske pri unosu datuma, koje je najbolje resenje?23.02.2008. u 19:30 - pre 195 meseci
na kakve greške konkretno misliš?

ako je u pitanju pogrešan podatak, to ne možeš ispraviti ni sa 88 boxova.

ako je u pitanju formatiranje onda možeš da se osloniš na veliku
"tolerantnost" Access-a za datumske vrednosti. znam da kao delimitere
prihvata tačke i zareze, da možeš da unosiš sa i bez vodećih nula, sa
i bez godine itd. u svakom slučaju prvo iskoristi Access-ovu
validaciju, hvataj error-e i pokušaj u svom kodu detektuješ šta je
problem (tipa unose / mesto . za delimiter), pa to ispraviš. ako ne
možeš to programski da koriguješ onda je bolje ne igrati se, već
javiti korisniku da ispravi podatak. ovo zato što kod komplikovanijih
stvari rizikuješ da programski ispraviš datum i zapravo dobiješ
potpuno pogrešan podatak, što je mnogo gore nego da obavestiš
korisnika kakav format datuma tvoj softver očekuje.

takođe vodi računa da se Access oslanja na regionalna podešavanja u
Windows-u na osnovu kojih određuje format datuma. pa proveri da li su
ova podešavanja ispravno podešena na nivou OS-a.

ovo rešenje sa više text boxova je najkomplikovanije za
implementaciju, jer moraš da vodiš računa o dosta stvari. posle svakog
unosa moraš da validiraš sve tekstboksove, zatim moraš predvideti šta
se dešava u situacijama kad nisu svi boxovi unešeni, a ti pokušavaš da
validiraš datum, šta ako ih korisnik ne unosi redom, kako detektovati
da li je datum uopšte unet, zatim povezivanje sa tabelom (kako bi
zaštitio integritet podataka) itd. ovo su problemi koji su mi pali na
pamet ovako "u letu", verujem da ih ima još.
 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
*.dynamic.sbb.co.yu.



+8 Profil

icon Re: Greske pri unosu datuma, koje je najbolje resenje?23.02.2008. u 19:50 - pre 195 meseci
Ja lično za unos datuma koristim Microsoft Date Time picker control, liči na combo box i kompaktna je dok se ne klikne na nju i sasvim lepo obavlja posao. To što ti želiš zahteva dosta kodiranja.
Ako kreneš sa 8 textboxeva (što ti nikako ne bih preporučio) postavi ih u subform, special effect flat i bez ivica, pored tih 8 bih postavio i 9. textbox koji bi bio skriven, taj 9. bi ti bio u stvari vezan za datumsko polje i u slučaju da utvrdiš da je polje datum onda ga updatuj.

Možda je bolja varijanta da napraviš textbox kome bi ograničio upis samo na cifre preko keypress event, tj ako je keyascii > 48 beše, then keyascii = 0. Možda bi se neko zainatio da pastuje neko slovo kad je već blokirana tastatura, možda to može regulisati keycode = 0 na keydown event. E sad za desni klik miša nisam siguran kako da blokiraš, ali ako se disabluje context menus u tools -> startup to bi rešilo problem.

Ja bih išao sa jednim textboxem koji bi imao 11 mesta, 8 za godinu, datum i mesec i tri za tačke. Koristio bih selstart svojstvo kod daljeg ograničavanja cifara, znači kod unosa datuma na poziciji 1 može biti broj najviše do tri, odnosno 2 ako je mesec februar. Kad bi recimo otkucao mišem prve dve cifre kursor bi mogao odmah da se prebaci na četvrtu poziciju, gde bi mogao da se otkuca samo 1 ili 0. Ako bi kao mesec uneo februar, a već si kao datum uneo 30, onda bi morao da smanjiš taj datum u zavisnosti od godine na 28 ili 29. Sve u svemu, puno posla oko nečega što već postoji, mada je ideja simpatična. Ako već odlučiš da istraješ u tome, postavi obavezno neki tooltip da korisnici znaju u kom formatu bi trebalo da kucaju, a tako odredi format u samoj bazi, iako kontrola na formi ne bi imala nikakav format.

Eto, toliko od mene
Ozbiljan i odgovoran mladić
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Greske pri unosu datuma, koje je najbolje resenje?23.02.2008. u 20:08 - pre 195 meseci
@ bojan_mil
Bez ljutnje, ali mislim da su ovi iz MS ipak bolje rešili unos datuma nego da ga rasparčavaš. Njihov tip polja Date/Time sa raznim formatima se zasniva na kalendaru tako da ne može da se unese nerealan datum, a razni tipovi Format-a i Input Masak, kao i Default Value na nivou tabele mogu u znatnoj meri da spreče loš unos. Na kraju tu je VBA, gde možeš da ograničiš korisnika koje datume može da unese, a koje ne, koristeći razne događaje na nivou polja ili forme. Takođe u okviru VBA postoje i razne funkcije koje konvertuju datume iz jednog u drugi format te se lako mogu prezentovati na formama i izveštajima u najrazličitijim oblicima koje korisnici zahtevaju. Ako je razlog kavalitet unosa i različiti tipovi datuma onda mi se čini da tvoja ideja nije pravo rešenje. Ako imaš neki konkretan problem oko datuma koji ne možeš da rešiš,rado ćemo svi pomoći.
 
Odgovor na temu

Trtko
Koprivnica

Član broj: 69494
Poruke: 695
*.bilokalnik.hr.



+8 Profil

icon Re: Greske pri unosu datuma, koje je najbolje resenje?25.02.2008. u 08:34 - pre 195 meseci
Globalno provjeravanje, tj. presretanje greški koje javlja access
O tom je i Zidar govorio.

Znači ako unese 25.14.2008 , javit če grešku,

Na glavnoj formi na Event On error


Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 2113 Then
MsgBox "Krivo ste unjeli podatke, obratite pažnju na brojke i slova "
' response 0 poništi accesovu poruku o grešci i vrati nas na onaj txt box gdje je nastala greška
Response = 0
End If
End Sub


.... itd
 
Odgovor na temu

[es] :: Access :: Greske pri unosu datuma, koje je najbolje resenje?

[ Pregleda: 2667 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.