---
title: "Uppdatara kryssrutor kopplade till olika ID?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/11812-uppdatara-kryssrutor-kopplade-till-olika-id"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Mattias"
published: "2001-09-25T19:55:00.000Z"
updated: "2001-09-27T16:12:00.000Z"
replies: 25
views: 398
page: 1
pages: 2
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/11812-uppdatara-kryssrutor-kopplade-till-olika-id"
---

# Uppdatara kryssrutor kopplade till olika ID?

_Sida 1 av 2._

## #1 — Mattias, 2001-09-25T19:55Z

Jag har en sida där jag har ett antal rader med kryssrutor som var och en symboliserar om en stuga är bokad en viss vecka. Varje rad av kryssrutor är "kopplad" till respektive rads/stugas ID-nummer. 

Sidans syfte är att man ska kunna uppdatera dessa kryssrutor genom att föra in kryssrutevärdena rad efter rad till databasen. Jag skickar alltså vidare värdena i formuläret till en dataupptagarsida. Det är här problemet uppkommer. 

Hur gör jag för att rad efter rad:s kryssrutor ska läggas in i databasen vid respektive ID-nummer? Koden jag skrivit nu (på upptagarsidan) funkar inte, men jag lägger in den ändå så att ni kan se den nuvarande koden. Är medveten om att den/jag kan vara helt åt h-e, men jag är inget ASP-geni precis. ;) Jag får inget felmeddelande utan hamnar på upptagarsidan, men fälten i DBn uppdateras inte.

```
<%
stugID = Request.Form("stugID")

v23 = Request.Form("v23")
v24 = Request.Form("v24")
v25 = Request.Form("v25")
v26 = Request.Form("v26")
v27 = Request.Form("v27")
v28 = Request.Form("v28")
v29 = Request.Form("v29")
v30 = Request.Form("v30")
v31 = Request.Form("v31")
v32 = Request.Form("v32")
v33 = Request.Form("v33")
v34 = Request.Form("v34")
v35 = Request.Form("v35")

Set Connection = Server.CreateObject("ADODB.Connection")
cnpath="DBQ=" & server.mappath("\mapp\databas.mdb")
connection.open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath

SQL = "UPDATE tblStuginfo_1 SET StugID = '" & stugID & "', v23 = '" & v23 & "', v24 = '" & v24 & "', v25 = '" & v25 & "', v26 = '" & v26 & "', v27 = '" & v27 & "', v28 = '" & v28 & "', v29 = '" & v29 & "', v30 = '" & v30 & "', v31 = '" & v31 & "', v32 = '" & v32 & "', v33 = '" & v33 & "', v34 = '" & v34 & "', v35 = '" & v35 & "' WHERE tblStuginfo_1.stugID = '" & stugID &"'"

Connection.Execute(SQL)
Connection.Close	
%>
```

Problemet med den nuvarande koden är väl att den bara lägger in den första radens (ID-numrets) kryssrutor? Hur gör jag alltså så att varje rads kryssrutevärden ska föras in i DBn? Lite svårt att förklara, men jag hoppas ni greppar ungefär hur jag menar.

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

## #2 — emission, 2001-09-25T22:12Z

Sätt datatypen för v23 m.fl. till ja/nej (bit), checkboxarnas VALUE till "1" och byt raderna med

v23 = Request.Form("v23")

till

v23 = len(Request.Form("v23"))

Ta sedan bort enkelfnuttarna runt veckovärdena i SQL-satsen. Jag antar att StugID är av texttyp. Annars ska enkelfnuttarna bort där också.

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

## #3 — Mattias, 2001-09-25T23:14Z

Tack för svaret, men informationen vill fortfarande inte läggas in i DBn. Kryssrutornas kod (på formulärsidan) ser ut så här:

```
<input type="checkbox" name="v35" value="1" <% If RS("v35") = true Then %> CHECKED <% End If %>>
```

Jag har inget problem att här infoga kryssrutornas värde från DBn till formulärets kryssrutor via ovanstående kod. Men vid uppdatering av forumläret hamnar jag alltså fortfarande på dataupptagningssidan utan att uppdaterade fält läggs in i DBn. Så här ser den relevanta koden på upptagarsidan ut nu:

```
<%
stugID = Request.Form("stugID")

v23 = len(Request.Form("v23"))
v24 = len(Request.Form("v24"))
v25 = len(Request.Form("v25"))
v26 = len(Request.Form("v26"))
v27 = len(Request.Form("v27"))
v28 = len(Request.Form("v28"))
v29 = len(Request.Form("v29"))
v30 = len(Request.Form("v30"))
v31 = len(Request.Form("v31"))
v32 = len(Request.Form("v32"))
v33 = len(Request.Form("v33"))
v34 = len(Request.Form("v34"))
v35 = len(Request.Form("v35"))

Set Connection = Server.CreateObject("ADODB.Connection")
cnpath="DBQ=" & server.mappath("\mapp\databas.mdb")
connection.open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath

SQL = "UPDATE tblStuginfo_1 SET StugID = '" & stugID & "', v23 = " & v23 & ", v24 = " & v24 & ", v25 = " & v25 & ", v26 = " & v26 & ", v27 = " & v27 & ", v28 = " & v28 & ", v29 = " & v29 & ", v30 = " & v30 & ", v31 = " & v31 & ", v32 = " & v32 & ", v33 = " & v33 & ", v34 = " & v34 & ", v35 = " & v35 & " WHERE tblStuginfo_1.stugID = '" & stugID &"'"

Connection.Execute(SQL)
Connection.Close	
%>
```

Vad gäller stugID-numret så är de av typen X-123, dvs texttyp. Ser du/ni något annat fel i ovanstående upptagningskod?

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

## #4 — emission, 2001-09-25T23:33Z

Skriv ut SQL-satsen som skapas, så tar vi en titt på den.

Onödigt att sätta StugID i UPDAT-satsen. Den ska ju vara samma som förut.

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

## #5 — Mattias, 2001-09-26T08:08Z

Här är SQL-satsen som skrivs ut:

```

UPDATE tblStuginfo_1 SET v23 = 4, v24 = 10, v25 = 10, v26 = 4, v27 = 4, v28 = 13, v29 = 4, v30 = 4, v31 = 4, v32 = 7, v33 = 1, v34 = 1, v35 = 4 WHERE tblStuginfo_1.stugID = ''
```

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

## #6 — jorgen, 2001-09-26T08:45Z

Hej!

Varibeln **stugID**  är tom. Du jämför tblStuginfo_1.stugID med ingenting.

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

## #7 — Mattias, 2001-09-26T09:14Z

Jo, det ser jag nu, men hur går jag tillväga för att infoga respektive stugas (stugID:s) bokningar (kryssrutor) i DBn? Såvitt jag kan se så skickas även stugID:t vidare från formuläret. Här är ASP-koden från formulärsidan som fångar upp stugor från ett visst område och presenterar dem och dess bokningar så att användaren kan klicka in nya bokningar och ta bort gamla:

```
<%
kategori = request.form("kategori")

Set Connection = Server.CreateObject("ADODB.Connection")
cnpath="DBQ=" & server.mappath("\mapp\databas.mdb")
connection.open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath

SQL = "SELECT * FROM tblStuginfo_1 WHERE Kategori = '" & kategori & "'"

set RS = Connection.Execute(SQL)
%>
 <form method="POST" action="bokning.asp">

...

<%
' --- Efter fem rader läggs rubrikerna (veckonumerna) in så att det blir lättare att läsa när det är många poster

WHILE NOT RS.EOF

FOR i = 1 to 5

' --- Byter färg på bakgrunden i varannan tabellrad

counter = counter + 1
If counter Mod 2 = 0 then
   color = "FFFFFF"
Else
   color = "#F1F1F1"
End If

%>
' --- Stug-ID läggs längst till vänster i tabellen
<%= RS("StugID") %>

' --- Så här ser varje cell med kryssruta ut:

 <td width="38" align="center" valign="middle" height="25" bgcolor="<% =color %>">
    <input type="checkbox" name="v23" value="1" <% If RS("v23") = true Then %> CHECKED <% End If %>

<%

RS.MoveNext

IF RS.EOF THEN EXIT FOR

NEXT
%>

...

<%
WEND
%>
...
 <input type="submit" value="Uppdatera bokning" name="B1">
...

<%
RS.close
SET RS = NOTHING
connection.close
%>
```

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

## #8 — emission, 2001-09-26T11:38Z

Du måste ha med StugID i formuläret, typiskt i ett hidden-fält.

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

## #9 — Mattias, 2001-09-26T15:34Z

Men StugID finns ju i formuläret nu. Titta i mitten av koden jag lade in så ser du \<%= RS("StugID") %\>. Eller hur menar du?

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

## #10 — LarsG, 2001-09-26T15:45Z

Det finns inget fält som heter stugid

```
<input type='HIDDEN' name='stugID' value='<%=rs("stugID")%>'>
```

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

## #11 — Mattias, 2001-09-26T17:14Z

Aha, NU är jag med. :) Har lagt till ett hiddenfält som skickar vidare StugID till nästa sida, men vid uppdateringen så får jag dock felmeddelandet:

```
Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: '[string: "UPDATE tblStuginfo_1"]'
/webtester/bokning.asp, line 26
```

Rad 26 på upptagarsidan är SQL-satsen:

```
set SQL = "UPDATE tblStuginfo_1 SET v23 = " & v23 & ", v24 = " & v24 & ", v25 = " & v25 & ", v26 = " & v26 & ", v27 = " & v27 & ", v28 = " & v28 & ", v29 = " & v29 & ", v30 = " & v30 & ", v31 = " & v31 & ", v32 = " & v32 & ", v33 = " & v33 & ", v34 = " & v34 & ", v35 = " & v35 & " WHERE StugID = '" & StugID &"'"
```

Det är ju eventuellt många stugor vars veckor ska uppdateras utefter vad användaren klickat i för kryssrutor på föregående sida. Kan felet ha något med DET att göra eller är det nåt annat i SQL-satsen som spökar?

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

## #12 — LarsG, 2001-09-26T17:21Z

set används inte vid tilldelning av strängar

```
SQL = "UPDATE tblStuginfo_1 SET v23 = " & v23 & ", v24 = " & v24 & ", v25 = " & v25 & ", v26 = " & v26 & ", v27 = " & v27 & ", v28 = " & v28 & ", v29 = " & v29 & ", v30 = " & v30 & ", v31 = " & v31 & ", v32 = " & v32 & ", v33 = " & v33 & ", v34 = " & v34 & ", v35 = " & v35 & " WHERE StugID = '" & StugID &"'"
```

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

## #13 — Mattias, 2001-09-26T18:01Z

Ok, det borde jag ju ha tänkt på. ;) Nu kommer jag iaf vidare och enligt min utskrivning av SQL-satsen så ska de värden jag kryssar för i kryssrutorna uppdateras, men tyvärr läggs inga värden till i DBn. 

Kan det ha med koden för kryssrutevärdet i formuläret? 

```
<input type="checkbox" name="v23" value="1" <% If RS("v23") = true Then %> CHECKED <% End If %>
```

Jag skickar ju vidare värdet 1 om kryssrutan i formuläret är ikryssad och i DBn har jag valt Ja/Nej (kryssruta) som datatyp. Men greppar egentligen Access att värdet 1 innebär att kryssrutan i DBn ska kryssas i?

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

## #14 — jorgen, 2001-09-26T18:06Z

Hej!

Det fattas en \> efter CHECKED.

Jag hade inte gjort if-satsen så, utan gjort en helt ny INPUT, en utan checked och en med och styrt vilken som skulle användas med if-satsen.

```
<% If RS("v23") = true Then %>

<input type="checkbox" name="v23" value="1" CHECKED>

<% else %>

<input type="checkbox" name="v23" value="1">

<% End If %>
```

r: stavfel

mvh Jörgen :)

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

## #15 — LarsG, 2001-09-26T18:09Z

Jag har för mig att Access tolkar 0 som false och allt annat som true så det borde vara ok.

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

## #16 — LarsG, 2001-09-26T18:16Z

Hur ser koden där du gör update ut och hur ser själva sql-satsen ut efter det att du har stoppat in alla värden?

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

## #17 — Mattias, 2001-09-26T18:53Z

jorgen: På vilket sätt är din lösning bättre än den jag använder?

LarsG: Så här ser updatekoden ut när jag klickat för v23 på först, andra och tredje radens stugor samt v24 och v25 på första radens stuga (C-429):

```
UPDATE tblStuginfo_1 SET v23 = 7, v24 = 1, v25 = 1, v26 = 0, v27 = 0, v28 = 0, v29 = 0, v30 = 0, v31 = 0, v32 = 0, v33 = 0, v34 = 0, v35 = 0 WHERE StugID = 'C-429, C-430, C-503, C-504, C-537'
```

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

## #18 — jorgen, 2001-09-26T18:59Z

Hej!

Funktionsmässigt gör det ingen större skillnad. Men strukturen på koden gör det lättare att kommentera och därmed lättare att felsöka, bygga om och förså koden vid ett senare tillfälle.

Mvh Jörgen :)

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

## #19 — LarsG, 2001-09-26T19:39Z

Ok, jag förstår. Du har alltså flera stugor som du vill uppdatera samtidigt. (Jag tänkte att det var så att du jobbade med en stuga i taget.)

Det som händer är att du lägger ut flera fält i ditt formulär som har samma namn och då kommer de värden som finns i de fälten att slås samman till en komma-separerad lista.

Det man får göra är att se till att de olika fälten får olika namn, tex så att man har ett löpnummer (du kan använda counter till exempel)

```
<input type='HIDDEN' name='stugID<%= counter%>' value='<%=rs("stugID")%>'>

<td width="38" align="center" valign="middle" height="25" bgcolor="<% =color %>">
<input type="checkbox" name="v23_<%= counter%>" value="1" <% If RS("v23") = true Then %> CHECKED <% End If %> >
```

sen så får du lägga till ett hidden fält som anger hur många stugor som du har

```
<input type='HIDDEN' name='counter' value='<% =counter%>'>
```

och sedan på sidan som uppdaterar

```
for i = 0 to request.form("counter")
stugID = request.form("stugID" & i)
v23 = Request.Form("v23_" & i)
v24 = Request.Form("v24_" & i)
v25 = Request.Form("v25_" & i)
v26 = Request.Form("v26_" & i)
v27 = Request.Form("v27_" & i)
v28 = Request.Form("v28_" & i)
v29 = Request.Form("v29_" & i)
v30 = Request.Form("v30_" & i)
v31 = Request.Form("v31_" & i)
v32 = Request.Form("v32_" & i)
v33 = Request.Form("v33_" & i)
v34 = Request.Form("v34_" & i)
v35 = Request.Form("v35_" & i)
SQL = "UPDATE tblStuginfo_1 SET v23 = " & v23 & ", v24 = " & v24 & ", v25 = " & v25 & ", v26 = " & v26 & ", v27 = " & v27 & ", v28 = " & v28 & ", v29 = " & v29 & ", v30 = " & v30 & ", v31 = " & v31 & ", v32 = " & v32 & ", v33 = " & v33 & ", v34 = " & v34 & ", v35 = " & v35 & " WHERE StugID = '" & StugID &"'"
connect.execute sql,,128
next
```

Det blir alltså en update sats per stuga.

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

## #20 — Mattias, 2001-09-26T21:22Z

Det fungerade tyvärr inte. Update-koden hinner inte ens köras. Får felmeddelandet:

```
Microsoft VBScript runtime (0x800A000D)
Type mismatch: '[string: "1, 2, 3, 4, 5, 5"]'
/webtester/bokning.asp, line 10
```

Rad 10 är:

FOR i = 0 to Request.Form("counter")

Är dock osäker på ett par saker i ditt föregående inlägg.

1\. Jag placerar koden som anger hur många stugor jag har (\<input type='HIDDEN' name='stugID' value='\<%=rs("stugID")%\>'\> ) i slutet av loopen. Detta är väl korrekt?

2\. Funderar på om du skrivit fel i slutet av din kod eller om det är JAG som gjort fel i min tidigare kod? Du skrev:

```
sql = SQL = "UPDATE tblStuginfo_1....
```

och

```
connect.execute sql,,128
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/11812-uppdatara-kryssrutor-kopplade-till-olika-id  
Nästa sida: https://www.webforum.nu/amne/asp/11812-uppdatara-kryssrutor-kopplade-till-olika-id/page2.md
