Avatar billede iballan Praktikant
23. februar 2011 - 11:24 Der er 5 kommentarer og
1 løsning

Finde uge og år med Datepart

Hej

Jeg har brug for at finde ugenummer og år ud fra en dato. Jeg har dog problemet med f.eks. 01-01-2011.

UGE:
DatePart("ww", "01-01-2011", vbMonday, vbFirstFourDays)

Returnerer rigtig nok 52

År:
DatePart("yyyy", ansat_dato, vbMonday, vbFirstFourDays)

Returnerer 2011, men det burde jo egentlig være 2010.

Nogen bud på hvordan det løses?
Avatar billede iballan Praktikant
23. februar 2011 - 11:26 #1
ansat_dato er selvfølgelig = 01-01-2011
Avatar billede neoman Novice
23. februar 2011 - 11:39 #2
Access har problemer med ugenumre (lidt uklart om de er løst i 2010/2007):
http://www.computerworld.dk/art/54460/pas-paa-med-ugenumrene-i-din-software
http://support.microsoft.com/kb/q200299

og flere løsninger her: http://www.eksperten.dk/spm/873903

Din anden del - hvad forventer du at DatePart skulle levere? Påstå at en dato i 2011 er i 2010?
Avatar billede Slettet bruger
23. februar 2011 - 12:29 #3
Ansættelsen er i år 2011 og det er også dette årstal du skal bruge til ancienitet osv.. Han er jo ikke ansat sidste år!~)

Det er kun uger, som har dette overlap.
Avatar billede iballan Praktikant
23. februar 2011 - 12:44 #4
Ugenumrene kører som de skal.

Jeg forstår udemærket godt hvorfor at den leverer årstallet som 2011, men jeg skal vel lave en eller anden beregning hvor jeg kontrollerer om min dato er 1/1 - 3/1, hvis den er det skal jeg kontrollere ugedagen på d. 1/1, hvis der er en fre-søn skal der trækkes 1 år fra årstallet.

Jeg skal bruge det fordi jeg gemmer mine data (timeregistrering) som:

UGE|ÅR|man|tir|ons|tors|fre|lør|søn

Jeg bliver derfor nødt til at regne frem og tilbage på datoer og uger. Det fungerer let at finde en dato ud fra ugedag, ugenr og år, men jeg døjer lige med de år hvor d. 1/1 ligger fre-søn
Avatar billede neoman Novice
23. februar 2011 - 12:56 #5
Hvilken version af Access har du? Bare fordi det stemmer i år er ikke bevis på at det stemmer alle de næstfølgende år.


Og hvis du har en rigtig ugenummerberegning hvad er problemet? Hvis ugeberegneren giver noget større end 50  for en januar-dato, så ved du at det er det forrige år du skal referere til.
Avatar billede iballan Praktikant
23. februar 2011 - 13:08 #6
Lige præcis neoman, tak.

Jeg gjorde således:

    If Format(Now(), "mm") = "01" And Me!Uge > 49 Then
        Me!Aar = DatePart("yyyy", Now, vbMonday, vbFirstFourDays) - 1
        Else
        Me!Aar = DatePart("yyyy", Now, vbMonday, vbFirstFourDays)
    End If
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester