Ik hoop dat iemand mij kan helpen, maar ik denk dat dit een lastige wordt. Ik ben een database aan het bouwen voor een bedrijf waar alles met weeknummers wordt berekend. Helaas is access amerikaans en gebruikt daarom niet de ISO kalender, waardoor bijvoorbeeld week1 in 2010 niet bestaat (gaat namelijk van week 53 naar week 2).
Het probleem om het goede weeknummer te krijgen heb ik inmiddels opgelost door de volgende module te maken:
[SQL]
Public Function IsoWeekNumber(d1 As Date) As Integer
Dim d2 As Long
d2 = DateSerial(Year(d1 - WeekDay(d1 - 1) + 4), 1, 3)
IsoWeekNumber = Int((d1 - d2 + WeekDay(d2) + 5) / 7)
End Function
[/SQL]
Het probleem is echter dat ik ook het jaarnummer ervoor moet hebben en ik ermee moet rekenen. Dit levert de volgende 2 problemen:
- Om het jaar ervoor te krijgen zoals ik eerst had, heb ik gebruikt gemaakt van hetvolgende: Right(Year([datum]),2) & isoweeknumber([datum]). Het probleem is nu dat ik bij week 1 t/m 9 geen 0 ervoor krijg te staan. Dus krijg ik bijvoorbeeld bij de 1e week van januari 2010 de volgende uitkomst: 101. Terwijl ik dus 1001 wil krijgen. Ook de toevoeging van Right(isoweeknumber([datum]),2) geeft niet het gewenste resultaat.
- Als ik IsoWeekNumber([datum])-1 doe, is het jammer genoeg echt -1 en niet min 1 week. Eerst gebruikt ik de volgende formule: Right(Format(DateAdd("ww",-1,Date()),"yyyyww"),4). Met deze formule krijg ik deze week te staan: 0950, want het is namelijk week 51. Hoe kan ik nou de isoweeknummering minus 1 week doen?
Het is vrij complex uitgelegd dus ik hoop dat jullie het snappen, vraag anders nog maar even wat er niet duidelijk is! Bedankt alvast!!
Het probleem om het goede weeknummer te krijgen heb ik inmiddels opgelost door de volgende module te maken:
[SQL]
Public Function IsoWeekNumber(d1 As Date) As Integer
Dim d2 As Long
d2 = DateSerial(Year(d1 - WeekDay(d1 - 1) + 4), 1, 3)
IsoWeekNumber = Int((d1 - d2 + WeekDay(d2) + 5) / 7)
End Function
[/SQL]
Het probleem is echter dat ik ook het jaarnummer ervoor moet hebben en ik ermee moet rekenen. Dit levert de volgende 2 problemen:
- Om het jaar ervoor te krijgen zoals ik eerst had, heb ik gebruikt gemaakt van hetvolgende: Right(Year([datum]),2) & isoweeknumber([datum]). Het probleem is nu dat ik bij week 1 t/m 9 geen 0 ervoor krijg te staan. Dus krijg ik bijvoorbeeld bij de 1e week van januari 2010 de volgende uitkomst: 101. Terwijl ik dus 1001 wil krijgen. Ook de toevoeging van Right(isoweeknumber([datum]),2) geeft niet het gewenste resultaat.
- Als ik IsoWeekNumber([datum])-1 doe, is het jammer genoeg echt -1 en niet min 1 week. Eerst gebruikt ik de volgende formule: Right(Format(DateAdd("ww",-1,Date()),"yyyyww"),4). Met deze formule krijg ik deze week te staan: 0950, want het is namelijk week 51. Hoe kan ik nou de isoweeknummering minus 1 week doen?
Het is vrij complex uitgelegd dus ik hoop dat jullie het snappen, vraag anders nog maar even wat er niet duidelijk is! Bedankt alvast!!
Laatst bewerkt: