webForumDet fria alternativet

unexpected next?

7 svar · 269 visningar · startad av timedia

timediaMedlem sedan maj 2001420 inlägg
#1

Vad gör jag fel idag? Får Unexpected 'Next' som felmeddelande.

foname = request.querystring("obj")
Set FSO2 = Server.CreateObject("Scripting.FileSystemObject") 
Set Folder2 = FSO2.GetFolder(server.mappath("bild/"&foname&""))
set Files = Folder2.Files 

For each Item In Files
	if left(Item.Name,3) = "th_" then
	Response.Write "<table>" & vbCrLf
        Response.Write "<tr>" & vbCrLf
        Do
		If x mod 3=0 and x>1 Then Response.Write "</tr><tr>" & vbCrLf

            Response.Write "<td>" & vbCrLf
	response.write item.name &"<br>"
		strFileName = item.name
		response.write "<img src ='bild/"& foname &"/"& strFileName &"'>"
		            Response.Write "</td>" & vbCrLf
					x=x+1
        Loop  Until files.EOF
Next
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Det finns ingen end if för

if left(iItem.Name,3) = "th_" then
@ndersMedlem sedan juni 200032 969 inlägg
#3

Du har gjort något konstigt. do hör ihop med until, men jag förstår inte alls varför du har en do-loop där?

Börja med att ta bort do- och loop-raderna.

Om du indenterar koden ordentligt är det lättare att se vad som är konstigt.

timediaMedlem sedan maj 2001420 inlägg
#4

Nu säger den:

Microsoft VBScript runtime error '800a01b6' 
Object doesn't support this property or method: 'EOF' 

/husshow.asp, line 122

Följande kod funkar, men jag vill göra så att den skriver en tabellrad med 3 bilder - så en ny rad med 3 o.s.v.

foname = request.querystring("obj")
Set FSO2 = Server.CreateObject("Scripting.FileSystemObject") 
Set Folder2 = FSO2.GetFolder(server.mappath("bild/"&foname&""))
set Files = Folder2.Files 

For each Item In Files

	if left(Item.Name,3) = "th_" then
	response.write item.name &"<br>"
		Dim strFileName
		strFileName = item.name
		response.write "<img src ='bild/"& foname &"/"& strFileName &"'><br>"
	end if
Next
@ndersMedlem sedan juni 200032 969 inlägg
#5

EOF använder du när du leker med recordsets, jag förstår inte varför du har med det i den här koden?

jonnyzMedlem sedan okt. 2004502 inlägg
#6

Kanske finns snyggare sätt att lösa det på. Känner mig rätt slut i huvudet, men detta bör fungera:

counter=0
For each Item In Files
   If left(Item.Name,3) = "th_" then
      counter=counter+1
      response.write item.name &"<br>"
      Dim strFileName
      strFileName = item.name
      response.write "<img src =""bild/" & foname & "/" & strFileName &""">"
      if counter=3 then
         counter=0
         response.write "<br>"
      end if
   end if
Next

Alltså, du räknar hur mycket du skrivit ut och när du kommer till tre byter du rad och börjar om igen.

timediaMedlem sedan maj 2001420 inlägg
#7

Tack för snabb hjälp! Följande funkar:

foname = request.querystring("obj")
Set FSO2 = Server.CreateObject("Scripting.FileSystemObject") 
Set Folder2 = FSO2.GetFolder(server.mappath("bild/"&foname&""))
set Files = Folder2.Files 
	Response.Write "<table>" & vbCrLf
	Response.Write "<tr>" & vbCrLf
For each Item In Files
	if left(Item.Name,3) = "th_" then
       		If x mod 3=0 and x>1 Then Response.Write "</tr><tr>" & vbCrLf
            	Response.Write "<td>" & vbCrLf
				strFileName = item.name
				Response.write "<img src ='bild/"& foname &"/"& strFileName &"'></a>"
		    	Response.Write "</td>" & vbCrLf
				x=x+1
			end if
Next
	end if
@ndersMedlem sedan juni 200032 969 inlägg
#8

Jag rekommenderar ändå att du ser till att indentera koden ordentligt, så den går att läsa.

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)