jaarweek omzetten naar datum

Status
Niet open voor verdere reacties.

Cindy B.

Gebruiker
Lid geworden
6 mei 2002
Berichten
321
Hallo,
Wie kan mij op weg helpen met het volgende:

In een database heb ik een kolom gemaakt als JaarWeek. Dus bv. 200607.
Hierin zit elke week van het jaar, met diverse geplande leveringen erin.

Nu zou ik het graag zo willen dat ik een automatische kolom heb, waarin 1 datum uit die betreffende week komt te staan.
Dus in het voorbeeld-geval: 13-02-2006 (de maandag uit week 7).

Welke dag er getoond wordt maakt niet uit, maar bv. elke keer de maandag van een betreffende week zou perfect zijn!

Ik hoop op een reactie!

groetjes,
Cindy
 
Ik weet niet of het bij Access werkt maar bij Excel kun je de volgende formule hiervoor gebruiken. Misschien helpt het je op weg voor Access.

Voor Excel:
Om de datum van de maandag uit het weeknummer te halen kun je de volgende formule gebruiken:

=DATUM(JAAR(NU());1;2)+(A1-1)*7

JAAR(NU()) pakt het huidige jaarnummer, Je kunt hier eventueel direct 2006 invullen.
A1 is de cel met het weeknummer.
2 staat voor de maandag. (1 = zondag)
 
Ik heb het even in Excel getest, maar dit werkt alleen wanneer je in de cel A1 bv. 8 hebt staan (week 8).
Mijn weeknotatie is overal als volgt: 200608.
En dan snapt tie het toch niet helemaal...

Maar goed, ik ben op de goede weg, het moet mogelijk zijn volgens mij. Heeft er iemand nog meer suggesties??
 
met jouw datumnotatie in A1 werkt het volgende wel.

=DATUM(LINKS(A1;4);1;2)+(RECHTS(A1;2)-1)*7

Hoe je dit naar Access kunt vertalen weet ik niet direct, ik maak niet zoveel gebruik van Access.
 
Zo zeg, ik moet hiermee toch echt op de goede weg zitten. Heb hem even "vertaald" naar Access en dan wordt hij als volgt:

Leverdag: DATE(LEFT([tabel1]![week];4);1;3)+(RIGHT([tabel1]![week];2)-1)*7

Hierbij is "week" de kolom van waar hij uit moet rekenen.
Helaas krijg ik nu een foutmelding: u heeft een ongeldig aantal argumenten opgegeven.

Is er iemand die weet wat ik nog niet goed doe?
 
Probeer het in een query eens met:

DeDatum: DateSerial(Int([strJrWk]/100);1;1)+Right([strJrWk];2)*7

waarbij [strJrWk] het veld is met jaartal en weeknr.

Zie ook afbeelding. Controleer even of het de juiste datum oplevert.
 

Bijlagen

  • JaarWk.jpg
    JaarWk.jpg
    44,7 KB · Weergaven: 106
Nou, hij werkt in elk geval wel. Alleen krijg ik nu de zondag van de week te zien. Eigenlijk zou hij de maandag van de week moeten tonen.
6 dagen eerder dus.

Weet je misschien ook hoe ik dat voor elkaar krijg??

groetjes,
Cindy
 
Tuurlijk. Dus realisen dat het afhangt van de dag van 1 januari van het jaar. En tov die datum corrigeren. Dus:

DateSerial(Int([strJrWk]/100);1;1)+(Right([strJrWk];2)*7)-Choose(Weekday(DateSerial(Int([strJrWk]/100);1;1));6;0;1;2;3;4;5)
 
Ik hoop niet dat je het erg vind als ik hem niet helemaal begrijp......maar het werkt wel!!
Super, onwijs bedankt!!

groetjes,
Cindy
 
Toch nog even een vraagje over onderstaande formule.
Hij werkt perfect in elk geval. Maar ik heb er weer een koppeling naartoe gemaakt om "4 weken na leverdag" te kunnen tonen.

Dit gaat mis. Ik gebruik hiervoor onderstaande code:

4 wkn na leveren: Year(DateAdd("ww";4;[Leverdag])) & Format(Format(DateAdd("ww";4;[Leverdag]);"ww");"00")

Hierbij is "Leverdag" de expressie die in (dezelfde) query wordt berekend.

Is mijn vraag een beetje duidelijk....en...wie weet wat er mis gaat??
Ter volledigheid: voorheen had ik deze kolom "Leverdag" in een tabel zitten, en gebruikte deze kolom voor de berekening, dat ging wel goed.

groetjes,
Cindy
 
Is [Leverdag] een datum? Als ja, dan kan je het vereenvoudigen volgens mij tot:
---
Format(CDate([Leverdag])+7*4;"d-m-yyyy")
 
Ja klopt, Leverdag is een datum.
Alleen de gewenste gegevens (4 wkn na leveren) moet dan weer als jaarweek getoond worden, dus als jjjjww.

Dus dan klopt jouw formule wellicht toch niet helemaal??
groetjes,
Cindy
 
Nee..helaas ook dat werkt nog niet.
Ik heb maar even een voorbeeld database erbij gedaan, met hierin de 2 genoemde velden (zie query).

Zoals je ziet is het veld van Leverdag de datum zoals ik hem gemaakt hebt volgens jouw onderstaande voorbeeld.
De berekening erna is diegene die de problemen oplevert.

Hopelijk is mijn probleem zo wat duidelijker!
groetjes,
Cindy
 

Bijlagen

Bijgaand db1 retour. Ik denk dat verwijzen naar een eerdere expressie niet lukte in dezelfde query. Heb nu query gemaakt op basis van de eerste query.

Het is een belachelijke formule geworden, maar het werkt wel (volgens mij):

Format$(CDate([Leverdag])+7*4;"yyyy") & Right$("0" & Format$(CDate([Leverdag])+7*4;"ww");2)
 

Bijlagen

Ja inderdaad, nu werkt tie wel!
Een beetje omslachtig wordt het zo wel, maar goed we gaan ermee aan de slag!

bedankt in elk geval!!
groetjes,
Cindy
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan