Avatar billede bugger Nybegynder
20. august 2003 - 08:52 Der er 5 kommentarer og
1 løsning

Hvordan finder jeg mandag i et ugenummer

Hejsa
Jeg er ved at lave en cykledagbog
Jeg har (omsider) fundet en metode til at udtrække alle records fra en tabel, hvor datofeltet.dato ligger indenfor en bestemt uge.:
strSQL="Select * from tider where datepart('ww',dato,2,0) = " & ugenummer
Ugenummeret kommer fra en selectform.
So far so good. Jeg vil nu lave en "minikalender" over den valgte uge som fremstår således:

Uge 32:
Mandag 4-08-2003 ingen data
Tirsdag 5-08-2003 ingen data
Onsdag 6-08-2003 her kommer objRs("rutenavn") & objRs("rutetekst") & objRs("antalkilometer")
Torsdag 7-08-2003 ingen data
Fredag 8-08-2003 her kommer objRs("rutenavn") & objRs("rutetekst") & objRs("antalkilometer")
Lørdag 9-08-2003 her kommer objRs("rutenavn") & objRs("rutetekst") & objRs("antalkilometer")
Søndag 10-08-2003 ingen data

Jeg skal altså ha sat databaseudtrækket ind i en sammenhæng -"flettet data" Det vil jeg gøre ved at lave noget med
For i=1 to 7
if....
dateadd+1
next
Men hvordan finder jeg udaf hvilken dato mandag i uge XX har?
Fx hvilken dato har mandag i uge 26 i 2002 ?

Tak for svar.

Ps hvis I har ideer til en anden tilgangsvinkel til problemet vil jeg også gerne høre dem.
Avatar billede she9 Nybegynder
20. august 2003 - 09:18 #1
Mandag må jo være den laveste dato i ugen.....
Avatar billede eagleeye Praktikant
20. august 2003 - 09:19 #2
Jeg bruger denne:


function findMandag(uge,aar)
d = DateSerial(aar, 1, 1)    ' 1/1/i år
'find mandag i uge 1
If DatePart("ww", d, 2, 2) = 1 Then    'Hvis 1/1 er i uge 1
  While(DatePart("w", d, 2, 2) <> 1)    'find sidste mandag
    d = DateAdd("d", -1, d)
  WEnd
Else
  While(DatePart("ww", d, 2, 2) <> 1)  'find næste mandag
    d = DateAdd("d", 1, d)
  WEnd
End If
findMandag = DateAdd("d", 7*(uge-1), d) 'juster til ugenummer, mandag
end function
Avatar billede dk_akj Nybegynder
20. august 2003 - 09:20 #3
<%

response.write DateOfWeek(26,2003)

function DateOfWeek(weeknumber, year)
  dim dt
  dt = DateAdd("ww", weeknumber, "01/01/" & year)
  while weekday(dt) > 1
      dt = DateAdd("d",-1,dt)
  wend
  DateOfWeek = dt -6
End Function

%>

//akj
Avatar billede eagleeye Praktikant
20. august 2003 - 09:20 #4
Så kald den sådan her som eks:

mandagdDato = findMandag(30, 2003)
Avatar billede bugger Nybegynder
20. august 2003 - 10:29 #5
Begge funktioner virker perfekt, så der burde være mulighed for at dele pointsene. However Eagleeye var ca 1 minut hurtigere end dk_akj så du får dem, men TAK til jer begge.
PS er det ikke korrekt at funktionerne finder udaf hvad mandag i uge 1 hedder og så ganger opmed 7 for at finde ud af hvad den hedder i den valgte uge.
Avatar billede eagleeye Praktikant
20. august 2003 - 10:32 #6
Ja det helt korrekt, den finder den mandag i uge 1, så ligger den X antal dage til for at finde mandagen i den vagte uge 7 (dage i en uge) * uge-1.
-1 fordi den har jo fundet mandagen i uge 1 ;)
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
Kurser inden for grundlæggende programmering

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