Dag voorwaarde bij datum

Status
Niet open voor verdere reacties.

chowdella

Gebruiker
Lid geworden
18 okt 2009
Berichten
20
Hallo lezer van mijn vraag,

Ik ben een bestand aan het bouwen en in dit bestand moeten mensen zelf hun piketrooster invullen. Een piketdienst start altijd op een vrijdag en eindigt op de donderdag daarna.
Als mensen dus een datum invoeren in het veld van [Startdatum], dan wil ik graag een voorwaarde inbouwen dat men niet een andere dag dan een vrijdag mogen invoeren.
[Startdatum] is gedefinieerd als datum.
Aanvullend hierop: In mijn tabel heb ik ook een veld [Einddatum]. Kan ik in de query dit veld een voorwaarde meegeven dat het automatisch 6 dagen bij de [Startdatum] optelt zodat ik een datum van een week later krijg? Ik weet dat ik in de query een extra veld kan aanmaken en de einddatum automatisch kan laten uitrekenen, maar deze gegevens staan dan niet in mijn verld [Einddatum] uit mijn tabel. Klopt dat?

Kan iemand mij misschien verder helpen?

Alvast bedankt!

Groetjes,
Della
 
Ik zou de voorwaarde ondervangen door het datumveld van de aanvraagdatum los te koppelen, en de Startdatum te vullen met (bijvoorbeeld) bijgaande functie:

Code:
Function PiketWeek(Datum As Date)
    PiketWeek = Datum - WeekDay(Datum, vbMonday) + 5
End Function
Op het formulier laat je dan (al dan niet via een datumformulier) een tekstvak (txtDatum) invullen, en je veld txtStartdatum krijgt dan deze formule bij de gebeurtenis <Na bijwerken>

Me.txtStartDatum=Piketweek(Me.txtDatum)
Voor de Einddatum doe je iets vergelijkbaars: Me.txtEindDatum=Me.txtStartDatum=Piketweek(Me.txtDatum)+7.
Ook op de <Na bijwerken> van het veld txtDatum.
 
Laatst bewerkt:
Hallo Michel,

Bedankt voor de snelle reactie. Ik lees jouw instructie en ik kan je helaas maar voor een deel volgen. Ik ben namelijk nog enigszins lerende in het bouwen van Access.

Begrijp ik het goed dat jouw code de week van de ingevulde datum "bekijkt" en er automatisch de vrijdag van die week maakt? En dit doe je door 2 velden te hebben en in de ene in te laten vullen en in de andere automatisch te laten genereren? En dit automatisch ingevulde veld is dan [Startdatum] wat ik in mijn tabel heb staan zodat de gegevens op deze manier opgeslagen worden?

Als ik het goed begrijp, moet ik in VBA codes deze voorwaarde zetten? via een veld in formulier (eigenschappenvenster en gebeurtenis?)? In VBA heb ik in de oude versies van Access weleens mee gewerkt, maar in Access 2007 vind ik dit niet echt makkelijk. Maar ik ben er niet ervaren in.

Ik zou de voorwaarde ondervangen door het datumveld van de aanvraagdatum los te koppelen,
Wat bedoel je met de aanvraagdatum?

Sorry Michel, het lijkt wel of ik meer niet snap dan wel snap. Ik lees graag deze forum, want er staan mega veel tips op (en vele ook van jou). Van heel veel begrijp ik vaak niet alles goed vanwege de vergevorderdheid van de informatie. Ik hoop dat je me meer uitleg kunt geven.

Groetjes,
Della
 
Hoi Della,

Vragen is natuurlijk altijd prima... Ik probeer vaak het eerste antwoord simpel (voor mij dan... ) te houden, dan hoor je gauw genoeg of de vraagsteller het snapt of niet. Dan weet ik namelijk des te sneller wat je wel weet, en wat niet ;)
In grote lijnen heb je het verhaal overigens prima begrepen! De functie Piketweek kun je in een willekeurige module zetten, zodat hij overal te gebruiken is. Wat ik met Aanvraagdatum bedoel, is niets meer of minder dan de datum die de aanvrager invult. Kwestie van benoemen, niks meer dan dat!

Dus in de praktijk ziet het er dan zo uit:
Op je formulier heb je 3 tekstvakken: [Datum] (in te vullen door aanvrager), [Start Piket] en [Einde Piket]. De laatste 2 worden gevuld door de functie PiketWeek.
Op het veld [Datum] (dat ik via Eigenschappen de naam txtDatum heb gegeven) maak je dan een gebeurtenis <Na Bijwerken> (met <Eigenschappen>, tabblad <Gebeurtenissen>)

Dat ziet er dan als volgt uit:

Code:
Private Sub txtDatum_AfterUpdate()
     Me.txtStartDatum=Piketweek(Me.txtDatum)
     Me.txtEindDatum=Piketweek(Me.txtDatum)+7
End Sub
Elke keer als er een andere datum wordt ingevuld, krijg je de juiste vrijdag + donderdag.
Je hoeft dus geen rekening meer te houden met de dag waarop de aanvraag wordt gedaan.
Het Datumveld dat de aanvrager invult hoef je waarschijnlijk niet op te slaan, dus dat hoef je niet te koppelen aan een tabelveld. Daarmee is het een onafhankelijk veld geworden. De twee piketdatums wil je waarschijnlijk wel opslaan, dus die koppel je dan (via Besturingselementbron) aan je tabel.

Duidelijker zo?
 
Laatst bewerkt:
Hallo Michel,

Heel veel duidelijker geworden. en inderdaad, ik heb het nog niet eens zo heel slecht begrepen:D.

Ik ga er vanavond mee aan het sleutelen en zal nadien terugberichten of het gelukt is. Wie weet kom ik met nog wat vragen!

Bedankt weer!


Groetjes,
Della
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan