Van weeknummer naar 1e dag van de week

Status
Niet open voor verdere reacties.

RonaldRoenhorst

Gebruiker
Lid geworden
25 dec 2008
Berichten
188
Ik heb het weeknummer als volgt 201448 en ingesteld als nummeriek veld.
Nu wil ik op basis van dit weeknummer de 1e dag van de week als datum zien (24-11-2014)
 
Wat vind je de eerste dag van de week?
 
Dan kom je met deze functie een heel eind.
Code:
Function DatumVanWeekNr(WeekNr As Integer, Jaar As Integer) As Date
    DatumVanWeekNr = DateSerial(Jaar, 1, 1) - Weekday(DateSerial(Jaar, 1, 1), 2) + (WeekNr - 1) * 7 + 1
End Function
Je moet hierbij nog wel bedenken wanneer week 1 ook echt week 1 is; deze formule gaat er vanuit dat 1 januari in week 1 valt. Dat is nogal arbitrair in agenda kringen :)
 
De code zet je in een willekeurige module. Je gebruikt hem in een query/formulier/rapport. In een query ziet het er zo uit:
Code:
SELECT DatumID, Werkdag, [DatumID] Mod 53+1 AS Weeknummer, Year([werkdag]) AS Jaar, DatumVanWeekNr([Weeknummer],[Jaar]) AS EersteDagVanWeek FROM tDatum;
Deze query is wat anders als je zelf gebruikt, maar omdat ik in deze tabel geen weeknummers heb, moest ik die genereren d.m.v. het veld DatumID. Jij hebt het weeknummer wel, dus je kunt dat gewoon in de functieaanroep zetten.
 
Je moet de weeknummerstring splitsen in een weekgetal en een jaartal. Dat doe je met LEFT en RIGHT. Ziet er dan zo uit:
Code:
Expr1: DatumVanWeekNr(Right([Weeknummer];2);Left([Weeknummer];4))
Overigens heb ik een aangepaste versie van de functie gemaakt die rekening houdt met weken die op donderdag beginnen. Daar had ik het in berichtje #4 over, want die tellen anders.
 
Werkt helemaal top Michel en wederom bedankt voor de duw in de rug. :thumb::thumb::thumb::thumb:
 
Laatst bewerkt:
Ik krijg je maar niet geïnteresseerd in de versie die de startdatum correct uitrekent :). (Kijk maar eens naar de startdatum voor 2010). Dus dan maar als ongevraagde bonus:
Code:
Function DatumVanWeek(WeekNr As Integer, Jaar As Integer) As Date
    DatumVanWeek = DateSerial(Jaar, 1, 1) - Weekday(DateSerial(Jaar, 1, 1), 2)
    DatumVanWeek = DatumVanWeek + (WeekNr - 1) * 7 + IIf(Weekday(DateSerial(Jaar, 1, 1), 2) > 4, 8, 1)
End Function
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan