Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Ci riprovo...

    Ho semplificato una pagina asp piuttosto complessa per esporre il
    mio problema in maniera semplice ed intuitiva:

    Ho creato un DB Access DBPROVA con due campi:

    Nome Tipo
    ID Contatore
    Prova SI/NO


    Poi ho creato una pagina asp che ne aggiorna il contenuto:

    Prima visualizza un form:

    codice:
    <form action="prova.asp?mode=AddItemAction" method="post" id=form1 name=form1>
    <input type="checkbox" name="prova" value="true">
    <input name="Submit" type=submit value="Submit">
    <input name="reset" type=reset value="Reset"></form>
    poi se si preme sul pulsante submit la parte in asp si
    incarica di recuperare il valore dal campo checkbox:

    codice:
    MySQL="Select * from TABELLAPROVA"
    Set MyRs=MyConn.Execute(MySQL) 	
    strNames = Request("prova")
    
    MySQL1="Insert INTO TABELLAPROVA ([PROVA]) VALUES ('" & strNames & "')"
    Ottengo cosi' una stringa (MySQL1) cosi' composta:
    Insert INTO TABELLAPROVA ([PROVA]) VALUES ('true') (prendendo il caso che la chckbox sia spuntata)

    che viene passata tramite il comando:

    codice:
    Set MyRs1=MyConn.Execute(MySQL1)
    e poi chiudo:

    codice:
    MyConn.Close
    set MyConn=nothing
    Il problema e' che ottengo un errore e quindi c'e' qualcosa che non va' nel procedimento:

    L'errore, se lo eseguo da internet e':

    HTTP 500 - Errore interno del server
    Internet Explorer


    Se invece lo eseguo in locale su IIS ottengo:

    Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
    [Microsoft][Driver ODBC Microsoft Access] Tipi di dati non corrispondenti nell'espressione criterio.
    /ris/dwnlarea.asp, line ...

    POST Data:
    Prova=true&Submit=Submit


    Probabilmente non riesco a mandare l'esatto parametro nel campo del DB perche' se invece del checkbox utilizzo un campo testo tutto funziona a meraviglia, quindi penso che il problema sia che il campo non accetta il valore true .
    E' una mia ipotesi...
    Forse qualcuno mi puo' aiutare.

    Grazie mille.

  2. #2
    standing ovation per il titolo del 3d

  3. #3
    Originariamente inviato da optime
    standing ovation per il titolo del 3d
    :maLOL:

    True è un valore booleano non puoi trattarlo come stringa.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  4. #4
    Quindi come posso ovviare al problema?

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    I campi SI/NO sono presenti solo in Access.
    Trasforma il campo in numerico di tipi byte e passa il valore 0/1.

    Roby

  6. #6
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781

    Re: Ci riprovo...

    Originariamente inviato da francypaoli

    Ottengo cosi' una stringa (MySQL1) cosi' composta:
    Insert INTO TABELLAPROVA ([PROVA]) VALUES ('true') (prendendo il caso che la chckbox sia spuntata)


    Probabilmente non riesco a mandare l'esatto parametro nel campo del DB perche' se invece del checkbox utilizzo un campo testo tutto funziona a meraviglia, quindi penso che il problema sia che il campo non accetta il valore true .
    così ad occhio direi che non accetta il valore 'true' che è una stringa, non true..
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  7. #7
    Roby puoi farmi un esempio concreto? Non ho capito cosa intendi.

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Quello che ho detto.
    Trasforma il campo del db da si/no a numerico byte.
    Invece di passare true/false passi 1/0

    Roby

  9. #9
    Quello di Roby è un buon consiglio, valido per tutti i database e indipendente da eventuali conflitti di lingua italiano/inglese (parlo per esperienza personale).

    In ogni caso la tua query di insert dovrebbe funzionare anche semplicemente togliendo i due apici singoli, cioè scrivendo

    codice:
    MySQL1="Insert INTO TABELLAPROVA (prova) VALUES (" & strNames & ")"
    anzichè

    codice:
    MySQL1="Insert INTO TABELLAPROVA ([PROVA]) VALUES ('" & strNames & "')"
    Perchè fai la query di select e crei il relativo recordset?

    Per inserire nella tabella il nuovo record il cui campo "prova" ha il valore recuperato dal form basta la query di insert.......
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  10. #10
    Qindi se ho ben capito non esistono comandi ASP o in questo caso SQL che possano gestire un valore booleano?
    In questo caso potrei fare in molti modi, forse mi conviene di piu' (visto che la versione che ho postato era una semplificazione di u form molto piu' complesso che ha al suo interno quasi esclusivamente campi testo) trasformare il campo in un campo testo e semplicemente leggere due valori diversi creati da me arbitrariamente (es. vero/falso, ma anche Giorgo/Luigi o Sole/Luna) e poi gestirli come fossero esclusivi uno dell'altro.

    Cercavo una soluzione piu' stilisticamente corretta, credendo che fosse possibile gestire campi true/false direttamente con SQL.

    Dico bene? Potete conferare questa conclusione a cui sono giunto?
    Grazie per la collaborazione.


    ...e scusate per la fantasia del titolo...

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.