<%=DatePart("ww", #2002-12-30#, 2, 2)%>
Ger vecka 52! Det skall ju vara vecka 53.
Måndag den 30:de december och tisdagen den 31:a är väl en egen vecka detta år?!
Fel vecka!
19 svar · 411 visningar · startad av Jesper T
Ärr ett år någonsin mer än 52 veckor???
Har aldrig hört talas om att v.53 existerar ens.. :q
Ja, det beror på vad det är för veckodag den första januari. Det kan vara ett par decemberdagar i vecka 1, och det kan finnas en vecka 53 med ett par januaridagar i.
I Sverige är vecka 1 den första vecka med minst 4 januaridagar.
Mvh,
Ja, ha. Då är det något annat fel som är trasigt då.
Problemet är att 30:e och 31:a försvinner i min veckokalender.
Vecka 52 = 23-29:de december
Vecka 1 = Onsd 1:a Sön 5:e
Med denna kalender:
weekno=38
y=2002
startdate= y & "-01-01"
Do Until DatePart("ww", startdate, 2, 2) = weekno
startdate = DateAdd("d", 1, startdate)
Loop
Response.write "v." & weekno & "<br>"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.mappath("veckobas.mdb")
For d = startdate To DateAdd("d", 6, startdate)
Response.write day(d) & " " & weekdayname(weekday(d)) & "<br>"
SQL_hitta = "SELECT * FROM tabellen WHERE xdatum=#"& d &"#"
Set Rec_hitta = Conn.execute(SQL_hitta)
Do Until Rec_hitta.eof
response.write Rec_hitta("ftid") & "-" & Rec_hitta("ttid") &" " & Rec_hitta("rubrik") &"<br>"
Rec_hitta.movenext
loop
Set Rec_hitta = nothing
response.write "------------------------------------<br>"
startdate = DateAdd("d", 1, startdate)
next
Jag får lixom inte till det.
Är det någon som fattar detta?
Onsdag den 1:a är ju den första dagen i vecka 1, men skall veckan börja på en måndag så ingår ju även den 30 och 31:a i denna vecka. Hur inkluderar jag dessa två dagar på bästa sätt?
Finns det ingen lösning på detta?
Borde man inte kunna börja med att kontrollera vilken veckodag det är? Pseudo:
if weekday(mydate) <> 1 then
' öh, det här är ju inte en måndag som är den 1:a?!?!?
for i = 1 to weekday(mydate)-1
' här börjar vi med måndagen
' använd dateadd() för att dra bort lämpligt antal dagar
next
end if
' sen kör du på med resten av din loop
Det kanske inte hjälper dig så mycket, men det kanske är något att tugga på?
Mvh,
Det är fel, fel fel fel.....
Oj, jag såg inte ditt föregående inlägg.
Jesper T skrev:
Kan någon förklara:
' använd dateadd() för att dra bort lämpligt antal dagar
Man tar bort/lägger till dagar så att dina veckor stämmer antager jag.
Man tar bort/lägger till dagar så att dina veckor stämmer antager jag.
Ja, det kunde jag också räkna ut. Men hur tar man reda på det då?
Jag märkte att man behöver inte krångla så mycket som jag gjorde i mitt förra inlägg. Jag har skrivit en kodrad åt dig, som ändrar veckans startdag om den är annat än måndag. Jag har inte hunnit testa den så mycket dock, det får du göra. ;)
weekno=38
y=2002
startdate= y & "-01-01"
Do Until DatePart("ww", startdate, 2, 2) = weekno
startdate = DateAdd("d", 1, startdate)
Loop
[b]if weekday(startdate, vbMonday) > 1 then startdate = dateadd("d", -(weekday(startdate)-2), startdate)[/b]
Response.write "v." & weekno & "<br>"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.mappath("veckobas.mdb")
For d = startdate To DateAdd("d", 6, startdate)
Response.write day(d) & " " & weekdayname(weekday(d)) & "<br>"
SQL_hitta = "SELECT * FROM tabellen WHERE xdatum=#"& d &"#"
Set Rec_hitta = Conn.execute(SQL_hitta)
Do Until Rec_hitta.eof
response.write Rec_hitta("ftid") & "-" & Rec_hitta("ttid") &" " & Rec_hitta("rubrik") &"<br>"
Rec_hitta.movenext
loop
Set Rec_hitta = nothing
response.write "------------------------------------<br>"
startdate = DateAdd("d", 1, startdate)
next
Mvh,
För kännedom
Denna rad fungerade utmärkt:
if weekday(startdate, vbMonday) > 1 then startdate = dateadd("d", -(weekday(startdate)-2), startdate) end if
Tack sn@bel



