Kanske såhär? :)
For Each FormKey In Request.Form
If UCase(Request.Form(FormKey)) = "ON" Then
rs(FormKey) = True
Else
rs(FormKey) = False
End If
next
5 svar · 497 visningar · startad av tomas21
Hej!
Jag har skapat ett formulär som använder sig av checkbox.
Formuläret skapas dynamisk beroende på hur tabellen i databasen ser ut:
Kod för formulär:
<%
If Request.QueryString("tabell") = "" Then
Response.Write ""
Else
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq="
& Server.MapPath("../data/etr0n.mdb")
tabell = Request.QueryString("tabell")
Set rs = Connect.OpenSchema(adSchemaColumns,Array(Empty,
Empty, tabell))
%>
<form method="POST" action="laggtill.asp?tabell=<%
=Request.QueryString("tabell")%>&ny=Ja" name="<%
=formName%>">
<%
While Not rs.EOF
name = rs("Column_Name")
desc = rs("Description")
If desc = "JaNej" Then
If rs("Column_Name") = "Kampanj" Then
Response.Write "<tr><td valign=top>" & rs("Column_Name") & " </td>"
%>
<td valign=top><input type="checkbox" name="<%=rs
("Column_Name")%>" value="ON"><br><br></td></tr>
<%
Else
Response.Write ""
End If
End If
rs.MoveNext
Wend
End If
End If
%>
Koden som lägger upp fältet i databasen ser ut såhär:
<!-- #include file="adovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &
Server.MapPath("../data/etr0n.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
tabell = Request.QueryString("tabell")
SQLSATS = "SELECT * FROM " & Request.QueryString("tabell")
rs.Open SQLSATS, Connect, adOpenStatic, adLockOptimistic
Dim FormKey
rs.AddNew
For Each FormKey In Request.Form
rs(FormKey) = Request.Form(FormKey)
next
rs.update
Response.Write newData
Response.Redirect "tabell.asp?tabell=" & Request.QueryString("tabell")
End If
%>
När jag använder denna kod för att skapa poster som inte innehåller checkbox då går allting bra. Om jag har en checkbox i formuläret som jag inte markerar med ett kryss när jag skapar posten då sätts den i access till false. Men det jag vill att den ska göra är att sätta den till true om man markerar den.
Om jag markerar den får jag error medelandet:
----------------------------------------------------------------------------------
Teknisk information (för supportpersonal)
Feltyp:
Provider (0x80020005)
Typblandningsfel.
laggtill.asp, line 24
Webbläsare:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Sida:
POST 10 bytes to laggtill.asp
POST Data:
Kampanj=ON
----------------------------------------------------------------------------------
Problemet med detta error medelandet är att det inte direkt finns en rad 24. Denna skapas genom loopen som lägger till posten i databasen alltså koden längst upp på detta medelande.
Jag misstänker att felet ligger i att jag skickar med värdet ON till ett Falskt/Sant fält i databasen. Men jag förstår inte varför den klagar och hur jag ska lösa det.
MVH/ Tomas
Kanske såhär? :)
For Each FormKey In Request.Form
If UCase(Request.Form(FormKey)) = "ON" Then
rs(FormKey) = True
Else
rs(FormKey) = False
End If
next
Alltså VAD FAN HADE JAG GJORT UTAN WEBFORUM. Alla som skriver här är kanon tack sebbe för ditt svar det fungerar galant.
Men jag undrar vad denna rad betyder
UCase(Request.Form(FormKey)) = "ON"
Alltså vad gör UCase?
UCase() gör så att alla tecken i strängen blir stora bokstäver. :)
AHA ok thnx man :)
Vassego. :)