kolom datum en week koppelen

Status
Niet open voor verdere reacties.

mmnijssen

Gebruiker
Lid geworden
17 okt 2008
Berichten
22
Hallo,

Ik hoop dat jullie mij kunnen helpen, ik heb een access bestand met onder andere een kolom datum en een kolom week, is er toevallig een mogelijkheid om deze te koppelen?
Het idee is, ik vul datum in kolom 1, in kolom 2 wordt de week automatisch ingevuld.

Alvast bedankt!
 
Ik hoop dat jullie mij kunnen helpen, ik heb een access bestand met onder andere een kolom datum en een kolom week, is er toevallig een mogelijkheid om deze te koppelen? Het idee is, ik vul datum in kolom 1, in kolom 2 wordt de week automatisch ingevuld.
En waarom zou je dat doen? Eén van de basisprincipes van een goede database is, dat je geen redundante gegevens opslaat. Eén soort redundantie is het opslaan van gegevens die je kunt berekenen uit andere velden. Een weeknummer is in jouw vraag linea recta gekoppeld aan het datumveld. Redundantie ten top dus. Weeknummers kun je bijzonder gemakkelijk berekenen in een query, op het moment dat je het nodig hebt. Er is geen enkele reden te bedenken om het op te slaan in een tabel.

Overigens, als antwoord op je vraag: nee, het kan niet eens. Tenzij je het via een formulier doet. Maar dan heb je de berekening al op het formulier staan :).
 
Je kan dat heel eenvoudig oplossen door een query te maken, gebaseerd op jou tabel en daar een veld creëren:

fldWeek : Datepart("ww";[NaamDatumveld])
Deze query kan je dan als basis van je form/report gebruiken
 
Al is DatePart niet altijd betrouwbaar, want levert soms incorrecte data op. Beter is het om een UDF te gebruiken.
 
Om een correct resultaat te krijgen moet je alle functies ook correct gebruiken, maar bij twijfel kan je de syntax altijd in de "HELP" of via google of YouTube vinden.
 
Om een correct resultaat te krijgen moet je alle functies ook correct gebruiken
Als een functie geen correcte resultaten oplevert, helpt het correct gebruiken ervan ook niet.

Hier een functie die wél het juiste resultaat oplevert. Zet 'm in een (willekeurige) module.

Code:
Public Function IsoWeekNummer(ZoekDatum As Date) As Byte
Dim iDatum As Long
    iDatum = DateSerial(Year(ZoekDatum - WeekDay(ZoekDatum - 1) + 4), 1, 3)
    IsoWeekNummer = Int((ZoekDatum - iDatum + WeekDay(iDatum) + 5) / 7)
End Function

En je gebruikt hem dan zo:
Code:
Weeknummer: IsoWeekNummer([Datumveld]).
Dingen niet moeilijker maken dan ze zijn :).
 
De functie Datepart heeft altijd correct gewerkt voor mij, en dingen gaan programmeren waar het niet nodig is lijkt me net de dingen moeilijker maken dan nodig is.
 
Nogmaals: DatePart geeft in sommige gevallen een verkeerd weeknummer terug. Je krijgt een weeknummer, maar niet de goede. Dat los je op door een functie te gebruiken die die fout niet maakt. Wat is daar op tegen? Een database die niet meer werkt omdat je er een tweeregelige functie in gebruikt, lijkt mij rijp voor de schroothoop... Ik gebruik deze functie al jaren, zonder enig probleem. En met correcte weeknummers :).
 
Laten we het maar aan TS overlaten, vind je niet? Wel grappig dat je liever een (potentieel) slechtere functie gebruikt (want DatePart is natuurlijk óók een functie) dan een superkleine functie die die fout niet heeft. Beetje koudwatervrees voor functies? Heb ik een mooie cursus voor geschreven :D. Of coute que coute je gelijk willen halen?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan