Weeknr

Status
Niet open voor verdere reacties.

Romario

Gebruiker
Lid geworden
29 aug 2001
Berichten
245
Heeft iemand een stukje code liggen om het volgende te zien:

Ik heb een textbox met een weeknr.
Nu wil ik weten wat voor dag de maandag valt van de ingevoerde week.

Iemand?
 
Deze vraag staat al een tijdje open en het is eigenlijk een ontzettend leuk probleem.
Access heeft een hele batterij functies in zich om te freubelen met datums, maar deze zit er natuurlijk net niet bij!
Maar met de beschikbare functies kun je natuurlijk wel zelf iets maken dat het gewenste resultaat geeft.

Ik heb een functie voor je geschreven die volgens mij precies doet wat je wilt:

Public Function fnGetMaandag(intWeeknr As Integer, intJaar As Integer) As String
Dim intTempWeeknr As Integer
Dim intTempDate As Date
Dim intTempDag As Integer
Dim intMaand As Integer
Dim intDagnr As Integer

'In Nederland is week 1 de eerste week waarin de donderdag in januari valt.
'Het format statement van Access kent hiervoor de de parameter firstweekofyear=vbFirstFourDays
'Van deze kennis kunnen we gebruik maken om een datum in de week met dat weeknummer te maken.
'Het jaar hebben we al het gaat om de maand en de dag.

'Eerst even de maand bepalen
intDagnr = 0
intTempWeeknr = 1
intTempDate = "01-01-" & CStr(intJaar)
Do While intTempWeeknr < intWeeknr
intTempDate = DateAdd("d", 7, intTempDate)
intTempWeeknr = Format(intTempDate, "ww", vbFirstFourDays)
Loop
intMaand = Format(intTempDate, "m", vbFirstFourDays)

'intTempDate bevat nu een datum in de week die we moeten hebben.
'Nu nog even bepalen welke dag of intTempDate is en dan kunnen we de maandag bepalen.
'Dagen hebben in access nummers, dus daar kunnen we gebruik van maken.
'Zondag = 1, maandag = 2 etc.
'Bij ons is zondag de eerste dag van de week, daar moeten we wel rekening meehouden!
intTempDag = WeekDay(intTempDate, vbMonday)
intTempDate = DateAdd("d", -1 * (intTempDag - vbMonday + 1), intTempDate)

fnGetMaandag = Format(intTempDate, "dd-mm-yyyy")
End Function


Stel je wilt de maandag van week 14 in het jaar 2003, dan roep je de functie als volgt aan:
dim strDatum as String
strDatum = fngetmaandag(14,2003)

strDatum krijgt dan de waarde 31-03-2003, wat volgens mij de juiste datum is.
 
Fantastisch!!!!

Dit is een hele mooie.
Deze functie zal vaak gebruikt worden!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan