webForumDet fria alternativet

Omvandla If sats till slinga

ASP

8 svar · 246 visningar · startad av CatZ

Medlem sedan jan. 20022 440 inlägg
Frågan#1

Jag har följande if sats:

If Not rs.EOF Then			
	If rs("KalDd") = aKalenderDagar((iRaderLoop-1)*7+iKolumnerLoop) Then
	Response.Write "<tr><td valign=top align=left>"
     	Response.Write rs("KalTitel") & "<br>"
	rs.MoveNext
	iAntalBokningar = iAntalBokningar +1
    Response.Write "</td><tr>"				
	End If
End If

Hur tusan ska jag göra en slinga av det? som kollar villka poster som ska vara med ? Som det är nu listas bara en post per dag.

Medlem sedan maj 20018 027 inlägg
#2

do until rs.EOF

If rs("KalDd") = aKalenderDagar((iRaderLoop-1)\*7+iKolumnerLoop) Then
Response.Write "\<tr\>\<td valign=top align=left\>"
 	Response.Write rs("KalTitel") & "\<br\>"
rs.MoveNext
iAntalBokningar = iAntalBokningar +1
Response.Write "\</td\>\<tr\>"

Loop

Medlem sedan jan. 20022 440 inlägg
#3
Do Until rs.EOF
If rs("KalDd") = aKalenderDagar((iRaderLoop-1)*7+iKolumnerLoop) Then
Response.Write "<tr><td valign=top align=left>"
Response.Write rs("KalTitel") & "<br>"
rs.MoveNext
iAntalBokningar = iAntalBokningar +1
Response.Write "</td><tr>"
Loop

Ger följande fel Loop utan Do (är min server cp eller ?)

Medlem sedan dec. 200012 464 inlägg
#4

Det saknas en end if

Det här ligger väl inuti en yttre loop där du loopar över veckodagar?

Medlem sedan jan. 20022 440 inlägg
#5

Japp, Om jag kör på UlfT's förslag så kör jag minnet i botten och cpu på 100% det verkar aldrig vilja sluta :) Några fler förslag ?

Medlem sedan dec. 200012 464 inlägg
#6
if not rs.eof then
for IraderLoop = 1 to 7
If rs("KalDd") = aKalenderDagar((iRaderLoop-1)*7+iKolumnerLoop) Then
Response.Write "<tr><td valign=top align=left>"
Response.Write rs("KalTitel") & "<br>"
rs.MoveNext
[b]if rs.eof then exit for[/b]
iAntalBokningar = iAntalBokningar +1
Response.Write "</td><tr>"
end if
next
end if

Strukturellt borde det bli så, med reservation för detaljer.

Medlem sedan jan. 20022 440 inlägg
#7

Och lösningen som kom till tack vare LarsG ser ut som följer (så att alla ska kunna ha nytta av den)

If Not rs.Eof then													
	For iSlinga = iRader to iKolumner
		If rs("KalDd") = aKalenderDagar((iRaderLoop-1)*7+iKolumnerLoop) Then
			Response.Write "<tr><td valign=top align=left>"
			Response.Write rs("KalTitel") & "<br>"
		rs.MoveNext
		iAntalBokningar = iAntalBokningar +1
			if rs.eof then Exit for
				Response.Write "</td><tr>"
		End If
	Next
End If

Jag vet inte varför detta funkar... men det gör det iaf :)

Medlem sedan maj 20018 027 inlägg
#8

CatZ skrev:

Japp, Om jag kör på UlfT's förslag så kör jag minnet i botten och cpu på 100% det verkar aldrig vilja sluta :) Några fler förslag ?

Konstigt. Hade du verkligen rs.MoveNext i den lösningen?

Medlem sedan jan. 20022 440 inlägg
#9

Enda sättet att lära sig är att experimentera och sedan fråga dem som vet bättre när man helt enkelt inte kan. Jag är iofs inget bra på att ställa rätt frågor så du får ha lite överseende med mig :)

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