webForumDet fria alternativet

Fel vecka!

ASP

19 svar · 411 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

<%=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?!

Medlem sedan juni 200032 967 inlägg
#2

[r]:

30/12 och 31/12 ska vara i vecka 1 väl?

Mvh,

Medlem sedan aug. 20002 272 inlägg
#3

Ärr ett år någonsin mer än 52 veckor???
Har aldrig hört talas om att v.53 existerar ens.. :q

Medlem sedan juni 200032 967 inlägg
#4

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,

Medlem sedan nov. 20017 144 inlägg
#5

Ja, ha. Då är det något annat fel som är trasigt då.

Medlem sedan nov. 20017 144 inlägg
#6

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

Medlem sedan nov. 20017 144 inlägg
#7

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
Medlem sedan nov. 20017 144 inlägg
#8

Jag får lixom inte till det.

Medlem sedan nov. 20017 144 inlägg
#9

Ä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?

Medlem sedan nov. 20017 144 inlägg
#10

Finns det ingen lösning på detta?

Medlem sedan juni 200032 967 inlägg
#11

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,

Medlem sedan nov. 20017 144 inlägg
#12

Det är fel, fel fel fel.....

Medlem sedan juni 200032 967 inlägg
#13

Är det fel, fel, fel?

Då förstår jag nog inte vad du menar.

Medlem sedan nov. 20017 144 inlägg
#14

Oj, jag såg inte ditt föregående inlägg.

Medlem sedan nov. 20017 144 inlägg
#15

Kan någon förklara:

' använd dateadd() för att dra bort lämpligt antal dagar

Medlem sedan sep. 2002538 inlägg
#16

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.

Medlem sedan nov. 20017 144 inlägg
#17

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å?

Medlem sedan juni 200032 967 inlägg
#18

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,

Medlem sedan nov. 20017 144 inlägg
#19

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

Medlem sedan juni 200032 967 inlägg
#20

np!

(men du behöver inte ha end if på den raden.)

mvh,

268 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)