10 messaggi dal 22 settembre 2003
salve... ho un checkbox su una pagina asp che richiama un campo di un database access dove c'è un valore è di tipo booleano ma non riesco a capire se on/off true/false...
nella pagina di inserimento uso RS("Attiva")=true per dare al campo l'opzione attiva.
ho creato la pagina di modifica del record relativo dove oltre ad attiva ci sono ovviamente altri dati... riesco a far modificare tutto tranne il campo attiva...

posto un po di codice per farmi capire meglio perchè non sono molto pratico...

CODE PAGE 1 Modifica.asp

<%Dim stato
stato=rec("attiva")
if stato=true then stato=" CHECKED" else stato="0" %>
<%Response.Write("<input type=""checkbox"" name=""chk""" & stato & ">") %>

questo trovato su questo forum, mi crea in automatico il campo checkbox in relazione allo stato del db... passo questo dato e altri tramite <form method=post ....

CODE PAGE 2 Modifica-process.asp

<!--#include virtual="pages/conn.inc"-->
<%
attiva=Request.Form("chk")
cod=request.querystring("idazienda")
SQL="UPDATE aziende set attiva='"&attiva&"' WHERE idazienda="&cod
Conn.Execute(SQL)
Response.Redirect "lista.asp"
%>

Se eseguo questa pagina mi da un errore del tipo:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/admin/modifica-process.asp, line 6

e ovviamente non modifica il campo attiva del mio db... ho constatato che la pagina Modifica.asp manda come output relativo a attiva "on" quindi probabilmente è per questo motivo che non riesce a scriverlo, perchè nel db prima ho scritto True...

Purtroppo non riesco nemmeno a spiegarmi per bene, ma spero che possiate aiutarmi..
grazie anticipatamente per l'aiuto!!

Daniele Alberghini
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

il problema è che se fai il request.form di una checkbox non ottieni true o false (valori richiesti dal campo booleano), ma qualcos'altro che è incompatibile.

Questo "qualcos'altro" è una stringa vuota se la check non è spuntata o "on" se è spuntata.
L' on viene rimpiazzato da una stringa personalizzata se hai specificato un value per la checkbox.

Esempio:

<input type="checkbox" id="pippo">
se è spuntata lato server ho che:
variabile = Request.Form("pippo")
variabile vale "on"

in questo caso:
<input type="checkbox" id="pippo" value="pluto">
se è spuntata vale "pluto" anzichè "on".

se tutte e due non sono spuntate ho come risultato "".

Tornando al tuo codice, correggi questa linea:
<%
if stato=true then stato=" CHECKED" else stato=""
%> 


poi, nella query fai:

<% 
attiva=Request.Form("chk") 
if attiva = "" then attiva="false" else attiva="true"
cod=request.querystring("idazienda") 
SQL="UPDATE aziende set attiva="&attiva&" WHERE idazienda="&cod 
Conn.Execute(SQL) 
Response.Redirect "lista.asp" 
%> 


dovrebbe funzionare, ciaoo

Enjoy learning and just keep making
10 messaggi dal 22 settembre 2003
funziona tutto ma con valori -1 e 0 al posto di True e False....

Grazie 1000
2.584 messaggi dal 14 maggio 2001
True e False corrispondono esattamente a quei valori...

Per te dovrebbe essere indifferente fare:
... set attiva=-1....
... set attiva=0....
... set attiva=true....
... set attiva=false....

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.