webForumDet fria alternativet

Typblandnings fel?

ASP

5 svar · 497 visningar · startad av tomas21

Medlem sedan feb. 2003130 inlägg
Frågan#1

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") & "&nbsp;</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

Medlem sedan jan. 20032 285 inlägg
#2

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
Medlem sedan feb. 2003130 inlägg
#3

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?

Medlem sedan jan. 20032 285 inlägg
#4

UCase() gör så att alla tecken i strängen blir stora bokstäver. :)

Medlem sedan feb. 2003130 inlägg
#5

AHA ok thnx man :)

Medlem sedan jan. 20032 285 inlägg
#6

Vassego. :)

277 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)