webForumDet fria alternativet

Undantag inträffade

ASP

14 svar · 282 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Min kod:

Do Until X = 11

	X = X + 1

	If RS("username1") <> "" then

	namn = Replace(server.HTMLEncode(RS("username1")),vbCrlf,"")
	text = Replace(Free(server.HTMLEncode(RS("text"))),vbCrlf,"")
	text = Replace(text,"'","\'")
	text = " " & text
	

	namn = "<b><font color=""#000066"">[" & Mid(RS("datum"),12,5) & "]</font>&nbsp;<font color=""#CC0000"">" & namn & "<font color=""#000000"">:&nbsp;</font> "&"</b>"
	
	Response.Write "parent.namn" & x & ".innerHTML = '" & namn & "'" & vbCrlf
	Response.Write "parent.text" & x & ".innerHTML = '" & text & "'" & vbCrlf 

	Else
	
	Response.Write "parent.namn" & x & ".innerHTML = ''" & vbCrlf
	Response.Write "parent.text" & x & ".innerHTML = ''" & vbCrlf 

	end if

	RS.MoveNext
Loop

Jag får undantag inträffade på If RS("username1") <> "" then

Varför?

Medlem sedan maj 20018 027 inlägg
#2

Du kanske inte har någon kolumn som heter "username1"? Skulle jag namnge en kolumn i en tabell, skulle jag skippa den där 1:an som du har petat dit. Därför förefaller det osannolikt att någon har namngett kolumnen till "username1". Kolla om inte kolumnen i själva verket heter "username".

Medlem sedan juni 200277 inlägg
#3

Det är alltid värt att kolla: If not rs.EOF then för att se att du inte har kommit till slutet av recordsetet. Om fältet med användarnamnet är helt NULL kan du kolla det med:
if rs("username1") is not null.

Medlem sedan feb. 20011 498 inlägg
#4

Jo, username1 finns. Men skrev så här istället

If Not RS.EOF then

men det funkar inte heller. Alltså det jag vill göra är att om det inte finns fler poster så ska det bli else

Medlem sedan juni 200277 inlägg
#5

Det enklaste sättet att göra det på är:

while not RS.EOF
...
...
...
wend

Så snart den har gott igenom alla poster kommer den att gå ut ur while satsen så då är det bara skriva else koden där...

Medlem sedan feb. 20011 498 inlägg
#6

Menar du så här eller?

	while not RS.EOF
	
	X = X + 1

	namn = Replace(server.HTMLEncode(RS("username1")),vbCrlf,"")
	text = Replace(Free(server.HTMLEncode(RS("text"))),vbCrlf,"")
	text = Replace(text,"'","\'")
	text = " " & text
	

	namn = "<b><font color=""#000066"">[" & Mid(RS("datum"),12,5) & "]</font>&nbsp;<font color=""#CC0000"">" & namn & "<font color=""#000000"">:&nbsp;</font> "&"</b>"
	
	Response.Write "parent.namn" & x & ".innerHTML = '" & namn & "'" & vbCrlf
	Response.Write "parent.text" & x & ".innerHTML = '" & text & "'" & vbCrlf 

	

	wend
	
	Response.Write "parent.namn" & x & ".innerHTML = ''" & vbCrlf
	Response.Write "parent.text" & x & ".innerHTML = ''" & vbCrlf

Men då laddar bara sidan.

Medlem sedan juni 200277 inlägg
#7

precis så, bara att du måste sätta en rs.MoveNext före went så att den går till nästa rad i tabellen. Det blir alltså så här:

while not RS.EOF

X = X + 1

namn = Replace(server.HTMLEncode(RS("username1")),vbCrlf,"")
text = Replace(Free(server.HTMLEncode(RS("text"))),vbCrlf,"")
text = Replace(text,"'","'")
text = " " & text


namn = "\<b\>\<font color=""#000066""\>\[" & Mid(RS("datum"),12,5) & "\]\</font\> \<font color=""#CC0000""\>" & namn & "\<font color=""#000000""\>: \</font\> "&"\</b\>"

Response.Write "parent.namn" & x & ".innerHTML = '" & namn & "'" & vbCrlf
Response.Write "parent.text" & x & ".innerHTML = '" & text & "'" & vbCrlf 

rs.MoveNext

wend

Response.Write "parent.namn" & x & ".innerHTML = ''" & vbCrlf
Response.Write "parent.text" & x & ".innerHTML = ''" & vbCrlf
Medlem sedan feb. 20011 498 inlägg
#8

Nu blir inte x + 1 hela tiden.

Medlem sedan juni 200277 inlägg
#9

se till att du sätter x till ett värde innan du går in i while loopen...då kommer den att räkna framåt och gör den inte det så är det för att det inte finns några rader i tabellen där du försöker läsa från.

Medlem sedan feb. 20011 498 inlägg
#10
	X = 0

	
	while not RS.EOF
	
	X = X + 1

	namn = Replace(server.HTMLEncode(RS("username1")),vbCrlf,"")
	text = Replace(Free(server.HTMLEncode(RS("text"))),vbCrlf,"")
	text = Replace(text,"'","\'")
	text = " " & text
	

	namn = "<b><font color=""#000066"">[" & Mid(RS("datum"),12,5) & "]</font>&nbsp;<font color=""#CC0000"">" & namn & "<font color=""#000000"">:&nbsp;</font> "&"</b>"
	
	Response.Write "parent.namn" & x & ".innerHTML = '" & namn & "'" & vbCrlf
	Response.Write "parent.text" & x & ".innerHTML = '" & text & "'" & vbCrlf 

	rs.MoveNext 

	wend
	
	Response.Write "parent.namn" & x & ".innerHTML = ''" & vbCrlf
	Response.Write "parent.text" & x & ".innerHTML = ''" & vbCrlf

Du kanske har missförstått mig så jag förklarar lite nogrannare.
Det jag vill göra är att först loopa igenom dem poster som finns i tabellen. Om det tex bara finns 5 poster så ska resten av posterna bli else och x ska adderas med 1 varje gång. För att det måste alltid finnas 11 parant...

Medlem sedan juni 200277 inlägg
#11

då fattar jag...Det här funkar i såna fall...

	X = 0

	
	while not RS.EOF
	
	X = X + 1

	namn = Replace(server.HTMLEncode(RS("username1")),vbCrlf,"")
	text = Replace(Free(server.HTMLEncode(RS("text"))),vbCrlf,"")
	text = Replace(text,"'","\'")
	text = " " & text
	

	namn = "<b><font color=""#000066"">[" & Mid(RS("datum"),12,5) & "]</font>&nbsp;<font color=""#CC0000"">" & namn & "<font color=""#000000"">:&nbsp;</font> "&"</b>"
	
	Response.Write "parent.namn" & x & ".innerHTML = '" & namn & "'" & vbCrlf
	Response.Write "parent.text" & x & ".innerHTML = '" & text & "'" & vbCrlf 

	rs.MoveNext 

	wend
	
while x < 12

x = x + 1
Response.Write "parent.namn" & x & ".innerHTML = ''" & vbCrlf
Response.Write "parent.text" & x & ".innerHTML = ''" & vbCrlf 

wend
Medlem sedan feb. 20011 498 inlägg
#12

Nu funkar det bra.

Medlem sedan feb. 20011 498 inlägg
#13

Den funkar inte perfekt. När det finns fler än 11 poster så skriver den ut parent12 och det ska den inte göra. Får ett javascipt fel om att parant12 är null och parant12 ska inte ens finnas med. Det ska bara gå till 11

Medlem sedan juni 200277 inlägg
#14

Skriv så här i första while loopen:

while not RS.EOF and X < 12

Det borde lösa det och om det är mer än 11 poster i databasen kommer den inte gå in i andra while loopen heller.

Medlem sedan mars 20015 287 inlägg
#15

Är det inte så att du börjar räkna från 0?

0-12 = 13 poster.

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