Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    FORM CHECKBOX >>> passaggio dati DB ACCESS

    Salve.
    Non riesco ad uscire da questo empasse:
    - DB Access
    - pagine ASP
    - Visualizzo tutti i campi del record, all'interno di una form, dentro al rispettivo strumento di immissione/variazione (ad esempio campi testo nelle textbox, si/no nei checkbox...)
    - Il pulsante submit della form invia con post i dati alla pagina update.asp (semplifico per fare prima)
    - la pagina update.asp crea la query di update prendendo i dati inviati dalla prima pagine tramite i Request("nome_campo")

    - L'errore che compare è il seguente:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

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

    /residence/admin/admin_updateAPPARTAMENTO.asp, line 503

    - la riga 503 è chiaramente la cn.Execute(MYsql).

    - faccio stampare la stringa sql e mi compare tutto a posto A PARTE I CAMPI provenienti dalle CHECKBOX, tanto che se faccio l'update SENZA quei campi, funziona, ma se li tiro in ballo... no.
    Ho provato a mandare in stampa il request di uno di questi campi, ma mi da vuoto, in pratica sembra che il dato non venga passato, e che poi l'update si incagli proprio per il fatto che non può passare un valore vuoto ad un campo di tipo booleano si/no.

    Ho provato con sì/no, true/false, 1/0, ho letto gli altri threat sull'argomento e fatto altre prove, ma niente.

    A questo punto credo di poter dire che non idea di come usare i checkbox.


    Questo è il testo delle righe di una delle checkbox nella pagina che visualizza i dati:
    <%
    IF RS_APP ( "Ariacondizionata" )="True" THEN
    Response.write "<input type=""checkbox"" name=""Ariacondizionata"" value="""" Checked=""ON"">"
    ELSE
    Response.write"<input type=""checkbox"" name=""Ariacondizionata"" value="""" Checked=""OFF"">"
    END IF
    %>

    ??? Ma quel checked=ON e checked=OFF come viene passato dalla form alla pagina seguente???

    E questo è il testo della query che riguarda la stessa:
    "ARIACONDIZIONATA='" & Request("ARIACONDIZIONATA") & "'," & _

    Spero di essermi spiegato.
    Grazzzzzzie a chi vuole aiutarmi.

  2. #2
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    secondo me il problema è qua:

    codice:
     <%
    IF RS_APP ( "Ariacondizionata" )="True" THEN
    Response.write "<input type=""checkbox"" name=""Ariacondizionata"" value="""" Checked=""ON"">"
    ELSE
    Response.write"<input type=""checkbox"" name=""Ariacondizionata"" value="""" Checked=""OFF"">"
    END IF
    %>
    io farei:

    codice:
     <%
    IF RS_APP ( "Ariacondizionata" )="True" THEN
    Response.write ("<input type='checkbox' name='Ariacondizionata' value='true' Checked>")
    ELSE
    Response.write("<input type='checkbox' name='Ariacondizionata' value='false'>")
    END IF
    %>
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  3. #3
    Purtroppo quella era stata la mia prima scelta.

    Adesso ho provato diverse soluzioni (vero, true, sì, null...), ma credo che i casi siano due:
    - o esiste una sintassi specifica per interrogare i checkbox (apici, virgole...).Io ho provato con IF Request("RISCALDAMENTOAUTONOMO") & "[]" <> "[]" then... come scritto su un altro thread, ma senza successo.
    - oppure esiste una sintassi specifica per richiedere i dati da un checkbox dalla form(il request non funziona?)

  4. #4
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    Originariamente inviato da S.t.e.f.040774
    Purtroppo quella era stata la mia prima scelta.

    Adesso ho provato diverse soluzioni (vero, true, sì, null...), ma credo che i casi siano due:
    - o esiste una sintassi specifica per interrogare i checkbox (apici, virgole...).Io ho provato con IF Request("RISCALDAMENTOAUTONOMO") & "[]" <> "[]" then... come scritto su un altro thread, ma senza successo.
    - oppure esiste una sintassi specifica per richiedere i dati da un checkbox dalla form(il request non funziona?)
    forse non ho capito.

    quando richiedi il dato di una checkbox ti viene dato il value. quindi nel value dovrai mettere qualcosa. se non metti nulla, non riceverai nulla.
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  5. #5
    "RISCALDAMENTOAUTONOMO='" & Request("RISCALDAMENTOAUTONOMO") & "'," & _

    Il problema è che se la checkbox è CHECKATA, il request mi restituisce 1, la variabile 0!
    Se NON è CHECCATA, il request mi da VUOTO, la variabile 1

    Quando nella prima pagina ho messo il codice

    <%
    IF RS_APP ( "RiscaldamentoAutonomo" )=true THEN
    Response.write "<input type=""checkbox"" name=""RISCALDAMENTOAUTONOMO"" value=""1"" Checked>"
    ELSE
    Response.write"<input type=""checkbox"" name=""RISCALDAMENTOAUTONOMO"" value=""2"">"
    END IF%>

    (value=2 è una prova per vedere se passa qualcosa di diverso da vuoto in caso di 0)
    (=true o ="true"??? tanto fa uguale )

    NON CI CAPISCO PIU NIENTE E HO PAURA CHE PEGGIORERO' SOLO LE COSE!

  6. #6
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    C'è un errore logico di fondo.

    Una checkbox serve per gestire valori di tipo booleano. Fino a qui ci siamo.

    Non c'è bisogno che scrivi:

    Codice PHP:
    <%
    IF 
    RS_APP "RiscaldamentoAutonomo" )=true THEN
    Response
    .write "<input type=""checkbox"" name=""RISCALDAMENTOAUTONOMO"" value=""1"" Checked>"
    ELSE
    Response.write"<input type=""checkbox"" name=""RISCALDAMENTOAUTONOMO"" value=""2"">"
    END IF%> 
    Perchè basta solo il fatto che sia selezionato o meno.

    Devi scrivere così:
    Codice PHP:
    <%
    IF 
    RS_APP "RiscaldamentoAutonomo" )=true THEN
      chekkato
    =" checked"
    ELSE
      
    chekkato=""
    END IF
    Response.write "<input type=""checkbox"" name=""RISCALDAMENTOAUTONOMO"" value=""1"" " chekkato ">"%> 
    la request a questo punto ti restituisce il valore "1" se hai messo il check, il valore "" se non l'hai messo.

    Quindi in fase di aggiornamento devi fare:


    Codice PHP:
    "RISCALDAMENTOAUTONOMO='" iif(Request("RISCALDAMENTOAUTONOMO")="","false","true") & "'," 
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  7. #7
    Grazie Kalosjo.
    All'inizio avevo provato così.
    per beneficio del dubbio ho provato anche così, ma continua a comportarsi stranamente.
    Adesso la variabile è sempre 1 (anche se nell'IFF metto altri parametri non numerici), mentre il request mi da sempre vuoto.

    Ho cambiato anche il nome dell'Input, per essere sicuro che non si intrippasse col nome uguale.
    Ho cancellato i file temporanei per essere sicuro che faccia veramente l'update della pagina....
    sono alla frutta. credo che andrò a dormire. il sonno porta consiglio.

    Mi sa che c'è un errore subdolo e magari veramente stupido alla base di tutto.

    Dopo il sonno rifaccio le pagine in toto e le uploado passo dopo passo.
    Una palla infinita, visto che di campi da passare ne ho circa 80, ma che ci posso fare?
    I campi testo funzionano perfettamente.

    Grazie a tutti.

  8. #8
    Alla fine non sono riuscito ad andare a dormire (nonostante il dritto di 'sta notte), perchè non riuscivo a smettere di pensare a questo problema.

    INCREDIBILE ma ho risolto!!!
    Scrivo la soluzione che ho trovato, in modo che altri possano usufruirne, non per manie di grandezza.
    - il passaggio alla variabile di un request da una checkbox, NON FUNZIONA su una riga sola(infatti la stampa del request andava bene, ma poi la stampa della variabile non corrispondeva).
    - non so per quale motivo l' IFF() ha funzionato per un po', poi senza ragione ha iniziato a dare errore di tipo (avrebbe agevolato le cose, ma...) >>> ELIMINATO


    Ho dovuto scrivere piu codice, ma adesso funziona.

    in pratica il passaggio alla variabile non si riesce a fare su una riga sola, quindi: prima passo il dato alla variabile e forzo i parametri della stessa in base a cosa ottengo dalla checkbox (ho cambiato i nomi per chiarezza)

    IF Request("RISCALDAMENTOAUTONOMO")="" THEN
    varRISCALDAMENTOAUTONOMO=0
    ELSE
    varRISCALDAMENTOAUTONOMO=1
    END IF

    Poi creo la stringa per la query

    MYsql="UPDATE tabella_Appartamenti SET " & _
    "INDIRIZZOCOMPLETO='" & Request("INDIRIZZOCOMPLETO") & "'," & _
    ...
    "RISCALDAMENTOAUTONOMO='" & varRISCALDAMENTOAUTONOMO & "'," & _
    ...
    "WHERE ID=" & Request("ID")

    Poi lancio la query e faccio il redirect alla pagina col form.

    E chi si aspettava che la checkbox si comportasse in maniera così diversa dagli altri campi???
    Soprattutto quando sulle guide il sistema che avevo usato in partenza viene segnalato come funzionante e migliore?

    Grazie per l'aiuto.
    Spero che questo post possa servire a qualcun'altro in futuro.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.