Newsgroup: it.lavoro.professioni.webmaster
Titolo: Errore checkbox

Salve, ho messo un campo checkbox in una pagina asp.
<input type="checkbox" name="metallizzato" value="si">
Il dato si memorizza su un database.
Se metto il segno di spunto nel checkbox il parametro "si"
si memorizza, ma se non metto niente mi dà errore:
Microsoft OLE DB Provider for ODBC Drivers errore "80004005' 
[Microsoft][Driver ODBC Microsoft Access] Il campo
"annunci.metallizzato" non può contenere una stringa di lunghezza
zero. 
C'è un sistema per farsì che se non metto il segno di spunto,
sul database si scriva per es "NO", praticamente ci sia una un qualche
paramentro in automatico.
Spero che qualcuno mi delucidi.
Grazie
      Gabriele

 paramentro in automatico.
il sistema c'e'... ma nel caso specifico potrebbe essere superflua...
potresti modificare il campo in uno di tipo bit, oppure lasciare le cose
come stanno e togliere il controllo sul campo nullo... in modo che se c'e'
qualcosa nel campo metti "si" altrimenti il campo sara' null... oppure la
varibile che utilizzi puoi settarla a "no" e nel caso sia checkata
l'aggiorni in "si"...
le strade sono tante...
--
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
Internet permette delle conversazioni tra esseri umani che erano
semplicemente impossibili nell'era dei mass media.

 si memorizza, ma se non metto niente mi dà errore:
Prima di inviarlo fai un parse del form con javascript
<html>
 <head>
  <script language="Javascript">
   function control() {
    if (document.test.metallizzato.checked) {
      document.test.metallizzato.value="si"
     } else {
      document.test.metallizzato.value="no"
    }
    window.alert(document.test.metallizzato.value);
    return (false)
   }
  </script>
 </head>
 <body>
  <form name="test" onSubmit="return control(this)">
   <input type="checkbox" name="metallizzato">
   <input type="submit">
  </form>
 </body>
</html>
ovviamente nell'action metti il tuo asp e dai un return (true) alla fine
della function control.
             Anak
anakthewolfE=mc^
2...@libero.it
 eliminare l'eq per risposte in priv

campi nulli... quindi o modifichi l'opzione sul db... oppure cambi logica...
scusami Lino, ma in realtà tipicamente *puoi* inserire in un campo di
un db access un Null ma non puoi inserire una stringa vuota, "".
-- 
mangia_fornitori_di_hosting ufficiale di questo newsgroup

si memorizza, ma se non metto niente mi dà errore:
no, ascolta, la faccenda non è che "il dato si memorizza nel
database".
quel checkbox sta in una form, ok?  quella form ha un'action, cioè un
altro file (tipicamente un altro .asp) che viene caricato, ok?  dentro
l'aztion puoi recuperare i valori dei vari <input...>, <select...>
ecc. per mezzo della collezione request(), ok?.
quindi il valore del controllo (per usare la terminologia di access)
checkbox di nome "metallizzato" lo trovi dentro quella che possiamo
chiamare "variabile di ambiente" request.form("metallizzato"), o
request("metallizzato") se vogliamo far prima, ok?
ora, la cosa importante è che se il checkbox di nome "metallizzato" è
stato checkato, request("metallizzato") varrà "checked" (mi pare - o
comunque non sarà vuota), se invece quel checkbox non è stato checkato
request("metallizzato") sarà vuota, ossia varrà "".
l'argomento value che tu dai al checkbox non c'entra niente in tutto
ciò.  o meglio c'entra, ma solo se checki il checkbox.
quindi quello che ti conviene fare è dimensionare una variabile e con
un if vedere se il checkbox è stato checkato, valutando se detro
request("nome_checkbox") c'è qualcosa oppure no.
quindi, supponendo che tu usi vbscript:
dim v
if request("metallizzato") <> "" then
   ' il checkbox fu ceckato
   v = true
else
   ' il checkbox non fu ceckato
   v = false
end if
almeno se il campo annunci.metallizzato è di tipo booleano ("sì/no"
nel gergo di access), o se una stringa metti tu i valori adeguati,
qualcosa tipo:
if request("metallizzato") <> "" then
   ' il checkbox fu ceckato
   v = "SI"
else
   ' il checkbox non fu ceckato
   v = "NO"
end if
comunque qui è un po' ot, queste cose stanno meglio sul ng
it.comp.www.asp.


 un db access un Null ma non puoi inserire una stringa vuota, "".
si, infatti per nulli... intendevo vuoti... (mi sono espresso male...)
--
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
E' triste, ma la parte di azienda con cui i mercati vogliono parlare è
spesso nascosta dietro una cortina di fumo, il cui linguaggio suona
falso - e spesso lo è.

Grazie peri i suggerimenti, il problema era nel database,
Il campo era settato in modo che non contentisse una stringa di
lunghezza 0
Ho aperto il database, click su struttura, selezionato il campo e
settato SI  in "consenti lunghezza zero" 
A questo punto ho messo il checkbox
<input type="checkbox" name="metallizzato" value="on">
per cui se è selezionato nel database si scrive ON
altrimenti il campo rimane vuoto.
mi hanno suggerito di correggere la stringa con
<input type="checkbox" name="metallizzato" CHECKED> 
per avere un linguaggio + giusto.
Tutto funziona.
Grazie a tutti
Gabriele
