---
title: "Varför blir får jag \"Undantag Inträffade\" i den här loopen?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/51583-varför-blir-får-jag-undantag-inträffade-i-den-här-loopen"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "leakim"
published: "2002-08-28T18:03:45.000Z"
updated: "2002-08-29T06:40:07.000Z"
replies: 2
views: 187
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/51583-varför-blir-får-jag-undantag-inträffade-i-den-här-loopen"
---

# Varför blir får jag "Undantag Inträffade" i den här loopen?

## #1 — leakim, 2002-08-28T18:03Z

Hej

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:

```
rubriker=new Array('2002', '2001', '2000');

meny1rubriker=new Array('Las Vegas1'); 

meny2rubriker=new Array('Las Vegas2'); 

meny3rubriker=new Array('Dominikanska1', 'Dominikanska2');
```

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?

All hjälp uppskattas stort.

Tack på förhand
/micke

Permalänk: https://www.webforum.nu/p/51583

## #2 — emission, 2002-08-28T21:46Z

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"

Permalänk: https://www.webforum.nu/p/764905

## #3 — leakim, 2002-08-29T06:40Z

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?

Permalänk: https://www.webforum.nu/p/765005

---

Tråden på webben: https://www.webforum.nu/amne/asp/51583-varför-blir-får-jag-undantag-inträffade-i-den-här-loopen
