---
title: "undantag inträffade"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/42640-undantag-inträffade"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "gucken"
published: "2002-04-28T11:35:25.000Z"
updated: "2002-04-29T01:15:14.000Z"
replies: 14
views: 387
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/42640-undantag-inträffade"
---

# undantag inträffade

## #1 — gucken, 2002-04-28T11:35Z

```
function hamta_tva(mota,lag_ett,div)
	sql = "SELECT Nick, SenasteLag FROM User WHERE div = "& div &" ORDER BY Anv_id asc"
	set rs=databas.execute (sql)
	do while not rs.eof
		if rs.fields("nick") = mota then
			rs.movenext
			if rs.eof then
				set recset=databas.execute (sql)
					if recset.fields("nick") = lag_ett then
						recset.movenext
						hamta_tva = recset.fields("nick")
					else
						hamta_tva = recset.fields("nick")
					end if
			else
				'om det inte är slut på tabellen
				if rs.fields("nick") = lag_Ett then
					rs.movenxt
					hamta_tva = rs.fields("nick")
				else
					hamta_tva = rs.fields("nick")
				end if
			end if
		else
		end if
		rs.movenext
	loop
end function
```

undantaget inträffade på rad 5
if rs.fields("nick") = mota then
vad är det för kryptiskt meddelande han försöker tala om för mig?
som jag ser det så finns inget undantag.

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

## #2 — Jesper T, 2002-04-28T18:04Z

Skall det inte vara:

if rs.fields("nick") = 'mota'

MVH Jesper T

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

## #3 — gucken, 2002-04-28T18:27Z

nej den ser det juh som en komentar då.

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

## #4 — emission, 2002-04-28T18:30Z

Vad ska funktionen göra? Det ser ut som ett typexempel på en funktion som man kan lösa direkt i SQL-satsen.

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

## #5 — gucken, 2002-04-28T18:36Z

den ska helt enkelt hämta SenasteLag och sedan hämta laget som kommer efter det som har samma div. 
om det då blir samma lag som lag_ett så ska den ta nästa.

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

## #6 — emission, 2002-04-28T19:40Z

Jag hänger inte riktigt med. Kan du ge ett exempel, med tabellstruktur etc.?

Felet beror på att du försöker hämta ett värde från recordsetet trots att EOF har nåtts.

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

## #7 — gucken, 2002-04-28T20:02Z

tabellen.
id                        räknare
nick                     text
senastelag         text
div                       integer

värde till mota skickas med. som är ett nick ex. kalle
sedan ska den kolla efter kalle i nick.
när den hittar kalle ska den gå ett steg till och spara nästa nick med samma nummer i div.

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

## #8 — emission, 2002-04-28T20:52Z

Och vad innehåller senastelag-kolumnen? Du använder inte den i din kod..

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

## #9 — gucken, 2002-04-28T21:49Z

den inehåller ett nick.. glömde säga att innehållet i mota är senasteLag

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

## #10 — emission, 2002-04-28T22:51Z

Jag är fortfarande lite lost, men följande kanske kan ge idéer i alla fall

```
function hamta_tva(mota,lag_ett,div)
   sql="SELECT TOP 1 U2.Nick FROM User U1, User U2 WHERE U1.div = "& div &" AND U1.div=U2.div AND U1.Anv_id<U2.Anv_id AND U1.nick='" & mota & "' AND U2.nick<>'" & lag_ett & "' ORDER BY U1.Anv_id"
   set rs=databas.execute (sql)
   if not rs.eof then hamta_tva=rs("Nick")
   rs.close
   set rs=Nothing
end function
```

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

## #11 — gucken, 2002-04-28T22:52Z

jag fattade inte alls många % av den sql sattsen.

går det inte att lösa lite mer på mitt sätt? =)

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

## #12 — emission, 2002-04-28T23:09Z

Jodå, men om tabellen blir lång så kommer det att bli en väldigt ineffektiv och långsam metod.

Kör på på samma sätt som förut, men tänk på att aldrig hämta ett värde från recordsetet direkt efter movenext, utan att kolla EOF först. Den andra databas.execute är lite konstig, eftersom den alltid kommer att returnera Nick från rad ett eller två i tabellen.

Den SQL-sats jag visade hämtar det första Nick som kommer efter Nick=Mota där Nick inte är lag_ett

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

## #13 — gucken, 2002-04-29T00:41Z

wow, du gjorde alltså allt det med en sql fråga.. vad menas med u1.fält? är det outer join det? och hur fungerar det som?.
eller rättare sagt, var kan man läsa om sådana avancerade sql grejjer på ett begripligt sätt?

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

## #14 — SPiN, 2002-04-29T00:52Z

U1.fält pekar helt enkeöt ut vilket fält som ska hämtas, där U1 är tabellnamnet. emission hade satt ett alias på dina tabeller, vilket inte är ett måste, men det underlättar oftast.

```
...FROM User U1, User U2...
```

I "vanliga" fall skriver man ju som säkert bekant:
FROM User. Sätter man någonting efter tabellnamnet så blir det ett alias för tabellen, så att man kommer åt den med det.

För att kunna göra allting till en fråga, skapade emission två tabeller utifrån samma tabell - för att kunna jämföra värden i den. Det är ett måste om man vill jämföra olika rader med varandra, och man är då tvungen att skapa två olika alias för samma tabell - för att komma åt de olika raderna. Om du hänger med på min hyfsat flummiga förklaring. :)

Det här hade alltså inte funkat på samma sätt:

```
SELECT User.Nick 
FROM User
WHERE User.div = User.div
AND User.Anv_id < User.Anv_id
```

Som det här:

```
SELECT U1.Nick
FROM User AS U1, User AS U2
WHERE U1.div = U2.div
AND U1.Anv_id < U2.Anv_id
```

I första frågan hämtas ingenting, då tabellen jämför med sig själv hela tiden. Uttrycket User.Anv_id \< User.Anv_id kommer ju aldrig att vara sant, då User.Anv_id ALLTID är lika med sig själv.
Så är inte fallet i andra frågan, då det existerar två temporära tabeller där man kan jämföra mellan fler rader.

Ingen outer join, med andra ord. :)

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

## #15 — gucken, 2002-04-29T01:15Z

Emission jo det är meningen att den andra ska göra det. bara rad 1 eller rad 2.
men hur som helst så har jag inte kommit förbi problemet än.
jag kollar om eof är sann på raden innan, men den gnäller iaf över undantagsfel. uppenbarligen så är eof falskt och den ska göra det den blir tillsagd.
jag blir galen av att inte få till detta, har hållt på med det alldeles för många dagar nu.  (tror jag har blivit tunhårigare med)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/42640-undantag-inträffade
