Avatar billede rafn12 Nybegynder
01. februar 2005 - 08:47 Der er 4 kommentarer og
1 løsning

Forkerte ugenr i access

Jeg ved at der er svar omkring dette men jeg kan ikke få det til at fungere..jeg har nedenstående forespørgsel, nogen der kan hjælpe med at få den til at give mig de rigtig uge nr???

SELECT Format(TabelEmner.InUseDate,"ww") AS Uge, TabelResponseTyper.Response
FROM TabelResponseTyper INNER JOIN TabelEmner ON TabelResponseTyper.ResponseTypeID = TabelEmner.ResponseTypeID
WHERE (((Format([tabelemner].[inusedate],"yyyy"))>2003) AND ((TabelEmner.EmneAfsluttet)=1) AND ((TabelEmner.ResponseTypeID)<>4))
ORDER BY Format([tabelemner].[inusedate],"yyyy"), Format(TabelEmner.InUseDate,"ww");
01. februar 2005 - 08:49 #1
Brug denne i stedet:

format(TabelEmner.InUseDate,"ww",vbMonday,vbFirstFourDays)
01. februar 2005 - 08:50 #2
Hvis din maskine er sat korrekt op i kontrolpanelet, burde du også kunne bruge denne:
format(TabelEmner.InUseDate,"ww",vbUseSystemDayOfWeek,vbUseSystem)
01. februar 2005 - 08:51 #3
Sorry, VB-konstanter virker jo ikke i SQL.

Den skal så se således ud:

format(TabelEmner.InUseDate,"ww",2,2)
Avatar billede rafn12 Nybegynder
01. februar 2005 - 08:55 #4
Tak for hjælpen:-)
Avatar billede fdata Forsker
05. februar 2005 - 22:39 #5
>>>Thomas og andre

Svaret er nok ikke helt korrekt, idet Access tilsyneladende har lidt problemer med ugenumrene. Problemet ligger omkring årsskifte/mandag/uge 53. Der var et hul i 2003 og der kommer et igen i 2007. Kør evt. nedenstående:

Private Sub Ugenr_Fejl()
  Dim D As Date
  Dim i As Integer
  D = #12/24/2003#    ' og 2007 og ...?
  Debug.Print "--------------", "--"
  For i = 1 To 15
    Debug.Print Format(D, "ddd", vbMonday, vbFirstFourDays); "  "; D, Format(D, "ww", vbMonday, vbFirstFourDays)
    D = D + 1
  Next i
End Sub

Microsoft anbefaler, at man selv udarbejder en rutine. Se:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;q200299&

Der har været flere bud på eksperten i stil med:

Function Korrekt_UgeNr(Dato As Date) As Integer
  Korrekt_UgeNr = DatePart("ww", Dato, vbMonday, vbFirstFourDays)
  ' Mandag i uge 53? Check lige fredag!
  If (Weekday(Dato) = 2 And Korrekt_UgeNr = 53) And _
    (DatePart("ww", Dato + 4, vbMonday, vbFirstFourDays) = 1) Then Korrekt_UgeNr = 1
End Function

Dette blot til generel info  ;o)
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