---
title: "Något fel i If-sats"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/51709-något-fel-i-if-sats"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Zandris"
published: "2002-08-30T07:04:13.000Z"
updated: "2002-08-30T19:18:45.000Z"
replies: 7
views: 288
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/51709-något-fel-i-if-sats"
---

# Något fel i If-sats

## #1 — Zandris, 2002-08-30T07:04Z

Hej!

Har suttit och stirrat mig blind på en kod. Och nuundrar jag om ni kanske kan hjälpa mig att se felet.

Koden ser ut så här:

for each fraga_id in request.Form("fraga_id")
svar_id = "svar_id\_"&fraga_id
svar = Request.Form(svar_id)
kommentar = "kommentar\_"&fraga_id
kommentar = Request.Form(kommentar)

tabort = "tabort\_"&fraga_id
tabort = Request.Form(tabort)

SQL_spara = "UPDATE svar_delobj SET svar_id = "&svar&" WHERE delobj_besk_id = "&delobj_besk_id&" AND fraga_id = "&fraga_id&";"
Set RS_spara = Conn.Execute (SQL_spara)

Response.Write(tabort)

If tabort = "" then

If NOT kommentar = "" then

SQL_sok_kommentar = "SELECT \* FROM kommentar WHERE kommentar = '"&kommentar&"';"
Set RS_sok_kommentar = Conn.Execute (SQL_sok_kommentar)

If RS_sok_kommentar.EOF then
SQL_skapa_kommentar = "INSERT INTO kommentar (kommentar) VALUES ('"&kommentar&"');"
Conn.Execute (SQL_skapa_kommentar)

SQL_hamta_kommentar = "SELECT Top 1 \* FROM kommentar ORDER BY kommentar_id DESC;"
Set RS_hamta_kommentar = Conn.Execute (SQL_hamta_kommentar)

SQL_uppdatera_kommentar = "UPDATE kommentarer SET kommentar_id = "&RS_hamta_kommentar("kommentar_id")&" WHERE delobj_besk_id = "&delobj_besk_id&" AND fraga_id = "&fraga_id&" AND objekt_id = "&objekt_id&";"

ElseIf NOT RS_sok_kommentar.EOF then

SQL_uppdatera_kommentar = "UPDATE kommentarer SET kommentar_id = "&RS_sok_kommentar("kommentar_id")&" WHERE delobj_besk_id = "&delobj_besk_id&" AND fraga_id = "&fraga_id&" AND objekt_id = "&objekt_id&";"

End If

Set RS_uppdatera_kommentar = Conn.Execute (SQL_uppdatera_kommentar)

ElseIf NOT tabort = "" then

SQL_tabort_kommentar = "DELETE FROM kommentarer WHERE objekt_id = "&objekt_id&" AND fraga_id = "&fraga_id&" AND delobj_besk_id = "&delobj_besk_id&";"
Set RS_tabort_kommentar = Conn.Execute(SQL_tabort_kommentar)
'Response.Write(SQL_tabort_kommentar)

End If

End If

next

Värdet i variabeln tabort försvinner någonstans på vägen.
Innan en If-sats har jag en "Response.Write(tabort)" och då får jag upp det riktiga värdet som jag letar efter men Ifsatsen; ElseIf NOT tabort = "" utförs inte. 
Varför?

Tacksam för svar av någon mindre morgontrött person än jag.  ;) 

MVH Zandris

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

## #2 — @nders, 2002-08-30T07:18Z

1) använd \[kod \]-taggar, så blir din kod betydligt mer lättläst här på forumet.
2) skapa inte recordsets när du ska köra insert/update/delete-frågor. det räcker alldeles utmärkt med bara *Conn.Execute(sqlfråga)*, eller ännu hellre *Conn.execute sqlfråga, , 128*.
3) Du behöver inte använda *ElseIf blablabla* när det är samma villkor som i IF-satsen. Använd endast *Else*.

Jag har skrivit om din kod lite grann. Se om det är något logiskt fel i det hela. ;)

```
for each fraga_id in request.Form("fraga_id") 
svar_id = "svar_id_"&fraga_id 
svar = Request.Form(svar_id) 
kommentar = "kommentar_"&fraga_id 
kommentar = Request.Form(kommentar) 

tabort = "tabort_"&fraga_id 
tabort = Request.Form(tabort) 

SQL_spara = "UPDATE svar_delobj SET svar_id = "&svar&" WHERE delobj_besk_id = "&delobj_besk_id&" AND fraga_id = "&fraga_id&";" 
Conn.Execute (SQL_spara) 

Response.Write(tabort) 

If tabort = "" then 
    If NOT kommentar = "" then 
       SQL_sok_kommentar = "SELECT * FROM kommentar WHERE kommentar = '"&kommentar&"';" 
       Conn.Execute (SQL_sok_kommentar) 
       If RS_sok_kommentar.EOF then 
            SQL_skapa_kommentar = "INSERT INTO kommentar (kommentar) VALUES ('"&kommentar&"');" 
            Conn.Execute (SQL_skapa_kommentar) 
            SQL_hamta_kommentar = "SELECT Top 1 * FROM kommentar ORDER BY kommentar_id DESC;" 
            Set RS_hamta_kommentar = Conn.Execute (SQL_hamta_kommentar) 
            SQL_uppdatera_kommentar = "UPDATE kommentarer SET kommentar_id = "&RS_hamta_kommentar("kommentar_id")&" WHERE delobj_besk_id = "&delobj_besk_id&" AND fraga_id = "&fraga_id&" AND objekt_id = "&objekt_id&";" 
       Else
            SQL_uppdatera_kommentar = "UPDATE kommentarer SET kommentar_id = "&RS_sok_kommentar("kommentar_id")&" WHERE delobj_besk_id = "&delobj_besk_id&" AND fraga_id = "&fraga_id&" AND objekt_id = "&objekt_id&";" 
       End If 
       Set RS_uppdatera_kommentar = Conn.Execute (SQL_uppdatera_kommentar) 
    Else
       SQL_tabort_kommentar = "DELETE FROM kommentarer WHERE objekt_id = "&objekt_id&" AND fraga_id = "&fraga_id&" AND delobj_besk_id = "&delobj_besk_id&";" 
Set RS_tabort_kommentar = Conn.Execute(SQL_tabort_kommentar) 
'Response.Write(SQL_tabort_kommentar) 
    End If 
End If 

next
```

Mvh,

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

## #3 — OveRRidE, 2002-08-30T07:19Z

Du använder 'fraga_id' som identifierare, och den härstammar från din loop och inte som value från din request.form:s id. Har dessa samma ordning/börjar på samma ställe?

Förstår du vad jag menar?

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

## #4 — Zandris, 2002-08-30T08:13Z

Hej på er!

Helt klart är ni mindre morgontrötta än jag  ;) 

Har ändrat runt lite i din kod, @nders, förstår inte varför men den var liksom mer lättarbetad  ;) 

Har tagit bort de Recordstetten som ej behövs. (Tack för påminnelsen!) Och ändrat ordningen lite bland if-staserna. Nu ser det bättre ut va´?

Men det funkar inte  :( 

OveRRidE: förstår inte riktigthur du menar... Om jag får upp värdena som jag ber om vad kan då vara fel? (Massor antar jag  ;) )

Nu ser koden ut så här:

```
for each fraga_id in request.Form("fraga_id")
svar_id = "svar_id_"&fraga_id
svar = Request.Form(svar_id)
kommentar = "kommentar_"&fraga_id
kommentar = Request.Form(kommentar)
tabort = "tabort_"&fraga_id
tabort = Request.Form(tabort) 
SQL_spara = "UPDATE svar_delobj SET svar_id = "&svar&" WHERE delobj_besk_id = "&delobj_besk_id&" AND fraga_id = "&fraga_id&";" 
Conn.Execute (SQL_spara) 

Response.Write(tabort) 

If tabort = "" then 
    If NOT kommentar = "" then 
       SQL_sok_kommentar = "SELECT * FROM kommentar WHERE kommentar = '"&kommentar&"';" 
       Conn.Execute (SQL_sok_kommentar) 
       If RS_sok_kommentar.EOF then 
            SQL_skapa_kommentar = "INSERT INTO kommentar (kommentar) VALUES ('"&kommentar&"');" 
            Conn.Execute (SQL_skapa_kommentar) 
            SQL_hamta_kommentar = "SELECT Top 1 * FROM kommentar ORDER BY kommentar_id DESC;" 
            Set RS_hamta_kommentar = Conn.Execute (SQL_hamta_kommentar) 
            SQL_uppdatera_kommentar = "UPDATE kommentarer SET kommentar_id = "&RS_hamta_kommentar("kommentar_id")&" WHERE delobj_besk_id = "&delobj_besk_id&" AND fraga_id = "&fraga_id&" AND objekt_id = "&objekt_id&";" 
       Else
            SQL_uppdatera_kommentar = "UPDATE kommentarer SET kommentar_id = "&RS_sok_kommentar("kommentar_id")&" WHERE delobj_besk_id = "&delobj_besk_id&" AND fraga_id = "&fraga_id&" AND objekt_id = "&objekt_id&";" 
       End If 
       Conn.Execute (SQL_uppdatera_kommentar) 
	End If
Else
SQL_tabort_kommentar = "DELETE FROM kommentarer WHERE objekt_id = "&objekt_id&" AND fraga_id = "&fraga_id&" AND delobj_besk_id = "&delobj_besk_id&";" 
'Conn.Execute(SQL_tabort_kommentar) 
Response.Write(SQL_tabort_kommentar)
End If 

next
```

 

Hoppas det blev rätt med kod-taggarna nu...

MVH Zandris

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

## #5 — solbulle, 2002-08-30T10:37Z

Inte för att jag satt mig in i koden direkt, men detta:

```
kommentar = "kommentar_"&fraga_id
kommentar = Request.Form(kommentar)
tabort = "tabort_"&fraga_id
tabort = Request.Form(tabort)
```

I detta block blir det väl som så att alltid blir det värdena från formuläret som blir gällande, de två andra raderna är väl helt onödiga att ha med?
Kan det vara rätt det?

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

## #6 — Zandris, 2002-08-30T15:49Z

Hej igen!

solbulle: Hur menar du med att två rader är helt onödiga? Vilka rader och varför?

MVH Zandris

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

## #7 — @nders, 2002-08-30T16:03Z

Jag tror att solbulle tänker fel. Men man skulle ju faktiskt kunna slå ihop de fyra raderna till två.

```
kommentar = Request.Form("kommentar_"&fraga_id)
tabort = Request.Form("tabort_"&fraga_id)
```

Samma sak med svar_id / svar.

Det avhjälper visserligen inte ditt problem. Jag är dock inte helt säker på *vad* ditt problem är. Kan du förklara igen?

En sak som jag alltid gör, är att jag slänger in testutskrifter precis överallt, för att veta exakt var problemen inträder. Så mitt råd: testutskrifter, ännu fler. ;)

Mvh,

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

## #8 — solbulle, 2002-08-30T19:18Z

Asch ja, jo jag tänkte fel... @nders, du har rätt.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/51709-något-fel-i-if-sats
