Nu har jag i tre dagar försökt förstå varför nedanstående kod genererar felmeddelandet "Undantag Inträffade" i Explorer.
Utgångsläget är detta:
Jag har ett recordset (undermenyRS) med kolumnerna "ar" (långt heltal) och "album" (text). Innehållet i recordsetet är för närvarande som följer:
ar album
2002 Las Vegas1
2001 Las Vegas2
2000 Dominikanska1
2000 Dominkanska2
Utifrån detta vill jag skriva ut en del av ett JavaScript som ser ut som nedan:
För att göra detta har jag använt mig av följande ASP-kod:
foregaendear = undermenyRS("ar")
for i=1 to x
Response.Write("meny" &i& "rubriker=new Array(")
do while foregaendear = undermenyRS("ar")
Response.Write("'" &undermenyRS("album")& "'")
foregaendear = undermenyRS("ar")
if not undermenyRS.EOF then
undermenyRS.MoveNext
if foregaendear = undermenyRS("ar") then
Response.Write(", ")
end if
else
foregaendear = 1
end if
loop
Response.Write("); " & chr(10))
foregaendear = undermenyRS("ar")
next
x är en variabel som innehåller antalet olika årtal i recordsetet, i det här fallet 3. Problemet är att så fort den näst sista kodraden läggs till får jag felmeddelandet "Undantag inträffade". Enligt Explorer inträffade undantaget på raden med den första IF-satsen. Tar jag bort If-satsen hamnar felet på första raden i av DO while-satsen.
Jag har provat allt jag kan komma på, men ingenting hjälper. Har jag använt en konstig metod för att åstakomma det jag vill? Har jag brutit mot någon regel i ASP?
Felet beror på att du har en Movenext ovanför den sista "accessen" till recordset.
foregaendear = undermenyRS("ar")
for i=1 to x
Response.Write("meny" &i& "rubriker=new Array(")
do while foregaendear = undermenyRS("ar")
Response.Write("'" &undermenyRS("album")& "'")
foregaendear = undermenyRS("ar")
if not undermenyRS.EOF then
[b]undermenyRS.MoveNext[/b]
if foregaendear = undermenyRS("ar") then
Response.Write(", ")
end if
else
foregaendear = 1
end if
loop
Response.Write("); " & chr(10))
foregaendear = [b]undermenyRS("ar")[/b]
next
..eftersom undermenyRS riskerar att bli EOF efter en Movenext kommer den sista accessen att bli "förbjuden"
Okej. Tack så mycket. Jag förstår varför det blir fel men det jag kan inte komma på någon lösning på hur jag ska göra för att få det att fungera.
Finns det något förslag för att komma runt det här problemet? Som jag tänker och som jag utformat den här programsatsen måste jag tilldela "foregaendear" det aktuella värdet på "undermenyRS("ar")" antingen före eller efter do-while-satsen för att programmet ska gå in i do-while-satsen på alla varv mellan 2 och x.
Finns det något bättre sätt att få fram det resultat jag vill ha utifrån det recordset som jag har?
265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e