i-orMedlem sedan nov. 2001294 inlägg Jag använder DatePart för att sortera ut poster med datum i en viss vecka. SQL-uttrycket ser ut så här:
Show = "SELECT * FROM Tabell WHERE DatePart('ww', Dat, 2, 2) = " & Request.QueryString("week") & " AND DatePart('yyyy', Dat, 2, 2) = " & Request.QueryString("year") & ""
Problemet är att vecka 1 innehåller datum från slutet av året innan. T ex ger 31 december 2002, vecka 1 men år 2002, istället för år 2003 som den borde ge.
För övrigt betyder sista tvåan i DatePart-uttrycket: "vbFirstFourDays, Start with the week that has at least four days in the new year."
Det är detta som gör att de sista datumen i december blir vecka 1.
i-orMedlem sedan nov. 2001294 inlägg Om någon är intresserad löste jag problemet på detta sätt (aningen stolt själv även om det säkert inte är den bästa lösningen):
<% Show = "SELECT DatePart('ww', Dat, 2, 2), Year(Dat), min(Dat) FROM Diary GROUP BY DatePart('ww', Dat, 2, 2), Year(Dat) ORDER BY min(Dat) DESC"
RecSet.Open Show, Connect, 3, 3
Do While Not RecSet.EOF
Dat = RecSet(0)
Dat2 = RecSet(1)
If Dat = 1 Then
Set RecSet2 = Server.CreateObject("ADODB.RecordSet")
Show = "SELECT * FROM Diary WHERE DatePart('ww', Dat, 2, 2) = 1 AND Year(Dat) = " & Dat2 & " AND Month(Dat) = 1"
RecSet2.Open Show, Connect, 3, 3
If RecSet2.EOF Then
Dat2 = Dat2 + 1 %>
<TR><TD><SPAN CLASS="subheading"><A HREF="diary.asp?diary=workouts&week=<% =Dat %>&year=<% =Dat2 %>">Week <% =Dat %>, <% =Dat2 %></A></SPAN></TD></TR>
<% End If
RecSet2.Close
ElseIf Dat > 51 Then
Set RecSet2 = Server.CreateObject("ADODB.RecordSet")
Show = "SELECT * FROM Diary WHERE DatePart('ww', Dat, 2, 2) > 51 AND Year(Dat) = " & Dat2 & " AND Month(Dat) = 12"
RecSet2.Open Show, Connect, 3, 3
If RecSet2.EOF Then
Dat2 = Dat2 - 1 %>
<TR><TD><SPAN CLASS="subheading"><A HREF="diary.asp?diary=workouts&week=<% =Dat %>&year=<% =Dat2 %>">Week <% =Dat %>, <% =Dat2 %></A></SPAN></TD></TR>
<% End If
RecSet2.Close
Else %>
<TR><TD><SPAN CLASS="subheading"><A HREF="diary.asp?diary=workouts&week=<% =Dat %>&year=<% =Dat2 %>">Week <% =Dat %>, <% =Dat2 %></A></SPAN></TD></TR>
<% End If %>