---
title: "uppdatera boolean-fält"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/109983-uppdatera-boolean-fält"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "force"
published: "2004-08-24T23:45:42.000Z"
updated: "2004-08-26T22:39:18.000Z"
replies: 11
views: 395
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/109983-uppdatera-boolean-fält"
---

# uppdatera boolean-fält

## #1 — force, 2004-08-24T23:45Z

Halo.

Jag har ett fält i min tabell som heter "betalda" och det är booleanskt, ja/nej.

Jag läser in alla rader med detta (kollar av fältet betalda och kryssar i en av två radio-knappar):

```
sql = "select * from hours where project_id=" & request.querystring("id") & " ORDER BY datum DESC"
rs.open sql,conn,3,1
do while not rs.eof

...

<input type="radio" name="<%response.write rs("ID_hours")%>" value="ja" <%If rs("betalda") = true then
		response.write "checked"
		End if%>>

<input type="radio" name="<%response.write rs("ID_hours")%>" value="nej" <%If rs("betalda") = false then
		response.write "checked"
		End if%>>

...

<%
	rs.moveNext
loop 
rs.close
%>
```

Alltså, beroende på vad project_id är sorterar den ut olika fält och skriver ut (tillsammans med lite annat som jag inte skrivit) radio-knapparna och bockar i dom rätt.
Detta funkar bra.

Nu till kruxet.  :)

Jag vill alltså kunna göra ändringar, kryssa i och ur radio-knappar och sedan uppdatera min tabell och skriva in de nya värdena i de fälten som jag ändrat.
(De andra värdena, såsom datum osv ska vara samma som innan, endast fältet "betalda" ska ändras.)

Nån som har något bra förslag ?

cheers / force

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

## #2 — force, 2004-08-25T09:03Z

Kanske borde tillägga att detta är inne i ett formulär som börjar:

```
<form name="betaldatimmar" action="betalda_timmar_utfor.asp" method="post">
```

Vet alltså inte riktigt hur jag ska skriva i betalda_timmar_utfor.asp för att skriva om ja/nej-fältet betalda beroende på hur respektive radio-knapp är markerad.
Vet att jag ska använda update, men inte hur...har bara gjort edit-funktion för en rad förut, inte för många som detta då blir.
Hjälphjälp  :)

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

## #3 — force, 2004-08-25T18:00Z

ingen ?

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

## #4 — Cmart, 2004-08-25T21:06Z

```
name="<%response.write rs("ID_hours")%>"
```

Måste du ha det så? Dvs. du plockar ut namnet  ur databasen. Om du ändrar det till name="id_hours" istället?
Jag tror du vill ha namnet på tabellen här?

Om det är så skulle du kunna köra nedanstående:
(ev. ska du skicka med "project_id" också?)

```

For i=1 to Request.Form("id_hours").Count

id_hours=CStr(Request.Form("id_hours")(i))

if id_hours = "ja" then
id_hours = true
else
id_hours = false
end if
strSQL="UPDATE hours SET" & 'din sqlfråga här
Database.Execute(strSQL)
next

Database.Close
Set Database=nothing
```

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

## #5 — force, 2004-08-25T21:58Z

Jo, det måste jag nog göra, annars vet ju inte asp-sidan vilka radioknappar som ska vara ikryssade och inte.

Hmhm...ID_hours är primärnyckeln/räknaren...project_id är lika på alla som visas.
Alltså visas x antal rader som har samma project_id...och deras primärnyckel är ID_hours.
Och kolumnen betalda är ja/nej (beroende på detta kryssas en av radioknapparna i i förväg), alltså måste jag väl ge varje radioknapp ett individuellt namn, så man vet vilken som är vilken ?
Så den vet vilken ID_hours-rad som ska ändras när jag byter radioknapp på någon av dom...eller har jag fattat det fel ?
Jag blir yr. :)

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

## #6 — Cmart, 2004-08-26T13:02Z

Då lägger du in en input hidden som skickar med ID_hours för varje loop:

```
 
<input type="hidden" name="ID_hours" value="<%=rs("ID_hours")%>">
```

Namnet på radioknapparna blir då ex. name="betalda"

Och koden i betalda_timmar_utfor.asp blir:

```
 
For i=1 to Request.Form("id_hours").Count

betalda = CStr(Request.Form("betalda")(i))
id_hours=CStr(Request.Form("id_hours")(i))

if betalda = "ja" then
betalda = true
else
betalda = false
end if
strSQL="UPDATE hours SET betalda='"&betalda&"' WHERE id_hours = "&id_hours&";"
Database.Execute(strSQL)
next

Database.Close
Set Database=nothing
```

Då går den igenom rad för rad där id_hours stämmer överens och uppdaterar. Hoppas det skall funka i alla fall.

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

## #7 — force, 2004-08-26T15:48Z

Tack för svaret ! :)
Tyvärr så fick jag det inte att funka dock...fick detta meddelande:
 \- - -
Request object error 'ASP 0105 : 80004005' 

Index out of range 

betalda_timmar_utfor.asp, line 23 

An array index is out of range.
 \- - -
Funderade på en grej du skrev förresten...det här:
 \- Namnet på radioknapparna blir då ex. name="betalda"

Radioknapparn får väl namnet ID_hours...alltså primärnyckeln, vilken rad det är i tabellen...
Det använder jag iaf för att få rätt radioknapp ikryssad på formulär-sidan, när den känner av databasen:

```
<input type="radio" name="<%response.write rs("ID_hours")%>" value="ja" <%If rs("betalda") = true then
		response.write "checked"
		End if%>>
```

Och en likadan för nej oxo, som jag skrev tidigare.
Hmhm, det var krångligt det här :)

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

## #8 — Cmart, 2004-08-26T16:39Z

Vad jag har förstått så är det fältet "betalda" i databasen som skall uppdateras med true eller false. DU använder rs("betalda") för att få reda på om den ska vara "checked" eller inte. Om du använder name=rs("ID_hours") kommer du få:

name=1
name=2
name=20

osv...

Du måste nog skicka med ID_hours som en egen input hidden

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

## #9 — Cmart, 2004-08-26T17:24Z

Du har rätt. Min kod funkar icke med radio-knappar men det går om du använder ex. select-tag med option-tags.

Om du vill ha radio-knappar så gör du precis som du gjort inputtaggarna men lägger även med:

```
 
<input type="hidden" name="ID_hours" value="<%=rs("ID_hours")%>">
```

Namnet på radioknappen blir då densamma som "value" för input hidden-tagen 

Koden i betalda_timmar_utfor.asp blir:

```
 
For i=1 to Request.Form("id_hours").Count

id_hours=CStr(Request.Form("id_hours")(i))
betalda = CStr(Request.Form(id_hours))

if betalda = "ja" then
betalda = true
else
betalda = false
end if
strSQL="UPDATE hours SET betalda='"&betalda&"' WHERE id_hours = "&id_hours&";"
conn.Execute(strSQL)
next

conn.Close
Set conn=nothing
```

Vet inte om det är den smidigaste lösningen som går att uppbringa men den funkar i alla fall.

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

## #10 — force, 2004-08-26T17:59Z

Perfekt, nu funkar det...dock en grej som strular.

Jag körde på din kod här ovan, och istället för att skicka till databasen med sql-satsen så skrev jag:

```
response.write id_hours & " = " & betalda
response.write "<br>"
```

Då fick jag helt rätt värden, alltså:
51 = False
49 = True
48 = True
osv.

Dock när jag ska köra in till databasen så får jag detta:
 \- - -
Microsoft OLE DB Provider for ODBC Drivers error '80040e07' 

\[Microsoft\]\[ODBC Microsoft Access Driver\] Data type mismatch in criteria expression. 
 \- - -

Vad kan det bero på ?

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

## #11 — Cmart, 2004-08-26T19:06Z

Hittade ett fel, så har ska det se ut:

```
strSQL="UPDATE hours SET betalda="&betalda&" WHERE id_hours = "&id_hours&";"
```

 

Lite mindre "fnuttar" kring betalda där.

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

## #12 — force, 2004-08-26T22:39Z

Grymt!
Nu funkar allt klockrent,
Tack så mycket för hjälpen :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/109983-uppdatera-boolean-fält
