ACCESS Validation rule = not IsDate ?

Preostalo o MS Pisarni
Odgovori
BubikolRamios
Prispevkov: 19
Pridružen: Če Sep 08, 2005 2:03 pm

ACCESS Validation rule = not IsDate ?

Odgovor Napisal/-a BubikolRamios »

tole sem dal že na uter acces forum pa brez uspeha.

na formu imam en field v katerega entram datum, enter s strani userja pa je lahko karkoli --> text, neobstoječ datum etc
zato npr :

Validation rule <>IsDate([DateFieldName])
Validation text = "whatewer"

ampak tole ne dela ker se preden pride do tule zgodi message:
'The value you entered isn't valid for this field'. Enako se zgodi oz ne zgodi če dam check vsebine polja na before update event.

Kako se izognit oz owerridat message 'The value you entered isn't valid for this field' ?

Hvala za odgovore.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Accessa sicer ne uporabljam, tako da vam ne morem podati natančnega odgovora, vendar pa bi se jaz tega lotil drugače.

Na masko bi dal navadno vnosno polje, ki bi ga kontroliral. Kontroliral bi pravilnost datuma v tem polju in če datum ne bi ustrezal, bi javil napako (slovensko!), ko pa bi bilo vse ok, pa bi vsebino tega polja, s kodo, zapisal v bazno polje in v tem primeru Acces ne bi javil napake, saj bi datum ustrezal.
lp,
Matjaž Prtenjak
Administrator
BubikolRamios
Prispevkov: 19
Pridružen: Če Sep 08, 2005 2:03 pm

Odgovor Napisal/-a BubikolRamios »

hja, ta kontrola je že navaden text box, ki ima property control source ki je tozadevni field tipa datetime. In zgleda da preden da kontrolo mojemu programu, sam sčekira ali bom insertal pravo vrednost.Hmm lahko bi stvar kontroliral na key up ampak to je malo nerodno oz. dvomim da ni mikrosoft kaj bolj elegantnega pogruntal.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

:),

saj ravno to sem vam želel reči. Na vnosno polje ne vežite ControlSource.

Držite se zlatega pravila, da se baza popravlja samo in izključno na željo uporabnika, ki mora za to izvesti neko akcijo (pritisniti gumb, uporabiti vročo tipko...). Kot odziv na takšen dogodek popravite bazo in šele v odzivu na ta dogodek v ustrezno polje baze zapišite (preverjeno!) vrednost vnosnega polja!

Jaz se sprašujem obratno. Zakaj so programerske hiše izdelale objekte, ki so "živo" povezani z bazo (to pomeni, da se spremema v njih takoj odrazi v bazi). Jaz takšnih kontrol nisem še nikoli uporabil. Se mi ne zdijo uporabne (vse prej kot uporabne!). Če nič drugega, takšna kontrola drži stik z podatkovno bazo, kar pomeni troši aktivno povezavo in v večini primerov zaklene zapis, da ga drugi ne morejo uporabiti (to je POVSEM neuporabno!).

Moja razvojna ekipa vedno dela takole:
  1. Na masko gredo samo "navadne" kontorle, to je kontrole, ki nimajo nobene zveze s podatkovno bazo.
  2. Ko se maska prikaže oz. ko se izvede neka akcija (NaslednjiZapis, Prejšnji zapis...) se sproži procedura branja baze in polnjenja vrednosti polj na maski z vrednostmi iz baze.
  3. Uporabnik lahko na maski dela kar hoče. Masko lahko pusti prižgano 2 leti, pa to ne bo na bazo popolnoma nič vplivalo, ker sploh ni povezave (ne zaklepam nobenega zapisa in podobne bedarije).
  4. Ko uporabnik izvede akcijo za vpis vrednosti v bazo, se vsa polja preverijo in če so ustrezna se vpišejo v bazo. (PS: če je vmes kdo drug že spremenil ta isti zapis, pa uporabniku javim, da je že prepozen :( )
Nihče me nikoli ne bo prepričal v karkoli drugega in nikoli ne bom potreboval nobenih DBxxxx kontrol.
lp,
Matjaž Prtenjak
Administrator
BubikolRamios
Prispevkov: 19
Pridružen: Če Sep 08, 2005 2:03 pm

Odgovor Napisal/-a BubikolRamios »

admim, se popolnoma strinjam, ampak access dela take lepe avtomatske forme :D , da se jim kar ne morem odrečt ---->

ok, po mukotrpnem googlanju sem našel :D
če še koga zanima:
http://www.microsoft.com/office/commun ... 2ba0a89c6
GoldZ
Prispevkov: 137
Pridružen: Če Sep 01, 2005 10:20 am

Odgovor Napisal/-a GoldZ »

Pozdravljeni!

Lahko pa uporabite Input mask lastnost na polju, kjer vnašate datum... :D
Življenje je enostavno, če poznaš "The Secret".
GoldZ
Odgovori