Acces, extra veld in query met weeknummer op basis van een numerieke datum

Status
Niet open voor verdere reacties.

ronbijen

Gebruiker
Lid geworden
1 dec 2011
Berichten
9
Hallo,
Ik wil in mijn query een weeknummer opnemen.
Deze week wil ik laten uitrekenen op basis van het nummerieke veld factuurdatum.
Deze datum heeft het formaat 20120127 (vandaag).
Hoe doe ik dat ?
Ik heb al vele oplossingen gezien maar ik krijg het weeknummer er niet uit.
PS Ik kan de database / type veld van de factuurdatum niet aanpassen aangezien het een bestand met een ODBC koppeling is ...

Ik gebruik nu
Week#: DatePart("ww";CInt([factuurdatum]);2;0) met als resultaat #fout ....:evil:

Graag advies / hulp ....
 
Een (niet in alle gevallen foutloze oplossing i.vm. de manier waarop de eerste week wordt berekend) makkelijke oplossing is dit in een query:
Code:
Weeknummer:Format([Factuurdatum];"ww";2;2)
Deze methode zal in de meeste gevallen een bruikbaar weeknummer opleveren.
 
Om daar nog een functie aan toe te voegen die het ISO weeknummer berekent:

Code:
Public Function IsoWeekNumber(d1 As Date) As Integer
' Attributed to Daniel Maher
    Dim d2 As Long
    d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
    IsoWeekNumber = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function

Deze functie zet je in een module, en die roep je in een query als volgt aan:

Weeknummer:IsoWeekNumber([Factuurdatum])

Enige aanvullende uitleg over ISO weeknummers vind je hier.
 
Hallo Michel,
Ik krijg er #fout uit, helaas ... waaraan kan dat liggen ?
het is een numeriek veld met een lange integer
het formaat is 20120214 (yyyymmdd)
 
Je geeft zelf al het antwoord:
het is een numeriek veld met een lange integer
De functie werkt op basis van datums, niet van getallen.
Vraag me niet waarom mensen getallen gebruiken voor datums, want ik zie daar het voordeel dus echt niet van :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan