Selectievakje met verplichte datum

Status
Niet open voor verdere reacties.

tclaesse

Gebruiker
Lid geworden
8 jan 2004
Berichten
240
Hallo,

Binnen m'n database heb ik een selectievakje Ja/Nee met daarnaast een datumveld dat hiermee eigenlijk rechtstreeks is verbonden.
Als ik bijvoorbeeld m'n selectievakje aankruis (JA) is het de bedoeling dat ik altijd ook het datumveld dien in te typen. Door een te snelle input kan dit
wel eens vergeten worden en hiervoor had ik graag een waarschuwing gekregen. (Maar dan dusn enkel bij het aanklikken van JA in m'n selectievakje)

Hoe kan ik dit het beste oplossen ? Met een IIF expressie binnen m'n formulier of is er een andere mogelijkheid?
 
Ik krijg sterk het idee dat je 2 velden gebruikt voor één entiteit (bijhouden wanneer een betaling is gedaan o.i.d.) en dan zou je dus makkelijk met één veld (het datumveld) kunnen volstaan; het selectievakje voegt namelijk hoegenaamd niks toe. Sterker nog: je ondermijnt daarmee de stabiliteit van je tabel, want als je wél het selectievakje aanvinkt, en geen datum, dan heb je een inconsistent record. Omgekeerd ook: je vult een datum in, en iemand zet het vinkje uit: wat betekent dat voor je record? Ik zou daar dus nooit voor kiezen, voor die oplossing. Als je wilt weten wanneer een handeling is uitgevoerd, gebruik dan alleen een datumveld. Als het wanneer niet belangrijk is, maar je alleen wilt weten dat een handeling is uitgevoerd, dan kun je volstaan met een selectievakje. Maar niet allebei.

Er vanuit gaande dat dit verhaal aan dovemansoren is gericht, en je toch selectievakje wilt koppelen aan het datumveld, dan zou ik een gebeurtenis maken op het selectievakje die op basis van de waarde van het selectieveld de datum invult of leegmaakt.
 
Michel,

Kan ik ook eventueel met een IIF expressie werken binnen m'n formulier zelf? Dus binnen m'n datumveld met een IIF verwijzen naar dat selectievakje?
Ik weet momenteel nog niet exact hoe dit zou lukken.
 
Laatst bewerkt:
Je kiest dus voor de dovemansoren optie :D. Je kunt in dit geval geen msgbox triggeren met een IIF formule. Het zou wellicht kunnen met een functie, maar elke keer dat je naar een record gaat waarin het veld leeg is (en dat moet toch kunnen, lijkt mij) zou je dan de msgbox krijgen. Ook als dat niet hoeft omdat het veld dus terecht leeg is. Zou ik dus ook niet doen. Gaat dit advies ook weer de dovemansoren in?
 
Nee nee, ik zal het maar houden op één enkel veld dan : datumveld en geen selectievakje. ;)Hoewel ik eigenlijk wel nieuwsgierig was hoe die gebeurtenis
op het selectievakje was...:rolleyes:
 
Dat is een simpele opdracht:
Code:
Private Sub chkControle_Click()
    Me.Controledatum = IIf(Me.chkControle = 0, "Geen datum", Format(Date * Abs(Me.chkControle), "d-mm-yyyy"))
End Sub
 
Bedankt Michel maar hier moet ik toch effe de rol lossen:confused:
In bijlage stuur ik , als alles goed is, m'n database. Het zou dus de bedoeling zijn dat ik in m'n formulier 'Frm_Erediensten' (gewoon enter na parameterquery) onderaan bij het aanvinken 'Nieuw erkend' de 'datum nieuwe erkenning' verplicht dien in te vullen.
Ik heb getracht om het met een gebeurtenisprocedure te doen maar blijkbaar zit er toch nog iets verkeerd. Kan u anders eens de code erin zetten
zodat ik u de volgende keer hiermee niet meer lastig moet vallen:D

http://wikisend.com/download/717720/Erediensten database 21nov.accdb
 
De code kun je zo goed als letterlijk overnemen...
Code:
Private Sub Nieuw_erkend_Click()
    Me.Datum_nieuwe_erkenning = IIf(Me.Nieuw_erkend = 0, Null, Format(Date * Abs(Me.Nieuw_erkend), "d-mm-yyyy"))
End Sub
Ik heb alleen de veldnamen aangepast. En verder (niet nodig maar waarom zou je het anders doen? De Recordbron voor het formulier op de tabel Erediensten gezet, en de query daar dus weggehaald. En laatste aanpassing: het veld [Datum_nieuwe_erkenning] moet in mijn mogen niet de eigenschap <Verplicht>=Ja hebben. Dus dat heb ik aangepast naar Nee.
 
Heel erg bedankt Michel! Momenteel geeft hij wel nog de datum van vandaag automatisch in het datumveld. Misschien bestaat er anders een kans dat er toch nog een foutieve datum wordt ingeput.

Kan het misschien ook lukken dat deze niet verschijnt en automatisch de boodschap 'voer een waarde in voor het het veld erediensten.Datum_nieuwe erkenning' wanneer ik heb aangevinkt?
 
Dan moet je de code aanpassen. Ik heb ook maar wat bedacht, wat mij handig leek. Maar als je het datumveld opmaakt in een Datumnotatie, dan krijg je als je in de datum klikt een kalender icoontje te zien en daarmee kun je simpel een andere datum kiezen. Mij lijkt het continue lastig vallen van gebruikers met boodschappen die ze weer moeten wegklikken niet bepaald gebruikersvriendelijk. Ik probeer dat in ieder geval zoveel mogelijk te vermijden.
 
Ik wou gewoon weg van de huidige datum en dus maar 1 'foutmelding' (zie hierboven) zodat het datumveld dus altijd ingevuld moest worden bij het aanvinken.
Om de code al direct aan te passen heb ik net iets te weinig ervaring nog...:confused:
Toch alvast bedankt!
 
Een datum is doorgaans gebaseerd op ofwel de huidige datum, ofwel een berekening op basis van een andere datum. Beide opties zijn prima te programmeren (één voorbeeld heb je al). En daar hoeft de gebruiker dus niks voor te doen. Als de gebruiker elke willekeurige datum mag invullen of het veld leeglaten, dan is het aan de gebruiker om dat correct te doen. Als ontwerper controleer je als de gebruiker het record verlaat of het formulier correct is ingevuld. Op dat moment is het vroeg genoeg om in te grijpen met een msgbox. Maar een gebruiker elke keer als hij een selectievakje aanklikt lastig te vallen met een msgbox? Ik zou dat never nooit niet doen. Tenzij je snel van je vrienden af wilt ;) Maar
Nee nee, ik zal het maar houden op één enkel veld dan : datumveld en geen selectievakje.
waarom hebben we deze discussie nog? Je wou weten hoe het moest, maar je gaat het nu toch niet alsnog inbouwen????
 
Nee hoor ik ga het zeker niet inbouwen maar het is eigenlijk ook meer uit nieuwsgierigheid gevraagd. Zeker omdat je hierboven aangaf dat de code eventueel toch kon worden aangepast. En daarom ook vroeg ik me af op welke manier.
Ik vermoed tenslotte dat ik later nog misschien met zulke zaken geconfronteerd kan worden en wou er gewoon meer inzicht in krijgen.
 
Dan hou ik het dus bij bovenstaand antwoord :). Selectievakjes kun je prima gebruiken om iets te triggeren in een ander veld, bijvoorbeeld een datum of een korting o.i.d. Het selectieveld zelf sla je dan niet op, wel de getriggerde waarde. Denk bijvoorbeeld aan een order waarbij een klant de ene keer wel, en de andere keer geen korting krijgt op basis van mondelinge afspraak of zo. Je triggert de uitkomst dan met een selectievakje. Ik heb deze keer een IIF gebruikt, omdat je dan de uitkomst ervan gelijk kunt gebruiken. De waarde van het selectievakje (0 of -1) kun je namelijk altijd in berekeningen gebruiken. Null is in het voorbeeld dan het leegmaken van het veld, en [Datum] * 1 is natuurlijk gewoon de datum.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan