Dim arrMonth : arrMonth = Array( "", "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" ) Dim bFirst for i = 12 To 1 step -1 bFirst = True strSQL = "SELECT * FROM dinTabel WHERE DatePart( 'm', dato ) = " & i & " and DatePart( 'yyyy', dato ) = 2004" set objRS = objConn.Execute( strSQL ) while not objRS.EOF if( bFirst ) then Response.Write( arrMonth( i ) & " 2004<br>" ) bFirst = False end if Response.Write( "din nyhed<br>" ) wend next
har du prøvet scriptet af? jeg kan i hvert fald ikke få det til at virke. Den laver en timeout.
Jeg tænkte på, det script du har skrevet, vil det ikke kun virke for 2004? Jeg skulle gerne have et script, der er variabelt, dvs. når vi når ind i 2005, så følger kalenderen med.
strSQL = "SELECT * FROM Kalender order by Dato desc" set rs = forbind.Execute( strSQL )
bFirst = true do while not rs.eof
if not lastmonth = arrMonth(Datepart("m",rs("dato"))) & " "& DatePart("yyyy",rs("dato")) then if bFirst = false then response.write "<hr>" end if %> <%=arrMonth(Datepart("m",rs("dato"))) & " "& DatePart("yyyy",rs("dato"))%> <% end if
ja ... med det script jeg postet, så kan man kun hente 2004. Men det var også blot ment som et spark i den retning du gerne ville ;o] at sætte 2005 ind kan, jo nemt gøres med en variabel.
Men du har endel overflødig kode i din loop. jeg ville have skrevet det sådan:
do while not rs.eof if lastmonth <> Datepart("m",rs("dato")) response.write "<hr>" Response.Write( arrMonth(Datepart("m",rs("dato"))) & " "& DatePart("yyyy",rs("dato")) ) end if
hvor jeg har taget udgangspunkt i din kode. Grundene er som følger:
1) Når du sorterer efter dato, så vil (forhåbentligvis) aldrig januar 2004 ligge umiddelbart før januar 2005 (med mindre du kun har én nyhed om året). Dermed så er det ikke nogen pointe i at lægge måneden og år ind i 'lastmonth' variabelen - det vil kunne fungere med kun måneden.
2) bFirst vil altid, i din kode, være false, bortset fra den allere første iteration. Dermed er det ikke nogen pointe i at teste om denne er false inden du skriver ud <hr>. hvis din if not lastmonth = arrmonth(...) then er true, så vil også altid if bFirst = false then være true ... og hvis man har en if som altid returnere true, så er det jo bare at fjerne denne
3) At afslutte scriptblokke for at skrive <%= %> istedet for at bruge Response.Write, er unødvendig. (%><%=arrMonth(Datepart("m",rs("dato"))) & " "& DatePart("yyyy",rs("dato"))%><%)
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.