webForumDet fria alternativet

unexpected next?

ASP

7 svar · 269 visningar · startad av timedia

Medlem sedan maj 2001420 inlägg
Frågan#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
Medlem sedan dec. 200012 464 inlägg
#2

Det finns ingen end if för

if left(iItem.Name,3) = "th_" then
Medlem sedan juni 200032 967 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.

Medlem 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
Medlem sedan juni 200032 967 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?

Medlem 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.

Medlem 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
Medlem sedan juni 200032 967 inlägg
#8

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

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