Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 43
  1. #1
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258

    problema con apici in select

    ho un problema con i soliti apici che credevo avessi ormai superato da tempo vista la mia esperienza in asp...ma i mostri tornano

    in pratica quando Valorecliente ha un apice all'interno la riga sql=... mi da errore

    codice:
    <% 		  
    		  Valorecliente=rec("cliente")
    		 
    		 		  %>
                              <select name="cliente" size="1" id="cliente">
                                <option value="<% =(Valorecliente) %>">
                                  <% =(Valorecliente)%>
                                  </option>
                                <%
    'Scrivo la mia query sql
    sql = "SELECT * FROM rubrica where cognome<>'" & Valorecliente & "'"
    
    'E creo il recordset
    Set Reccliente = Server.CreateObject ("ADODB.Recordset")
    Reccliente.Open sql, Conn, 3, 3
    do while not Reccliente.eof 
    
    valore=Reccliente("cognome")
    nome=Reccliente("cognome") 
    
    nome = Replace(nome ," ","%20")
    
    response.write("<option value=" & nome &">" & valore &"</option>") 
    Reccliente.movenext 
    loop %>

  2. #2

    Re: problema con apici in select

    Originariamente inviato da Luca1317
    ho un problema con i soliti apici che credevo avessi ormai superato da tempo vista la mia esperienza in asp...ma i mostri tornano

    in pratica quando Valorecliente ha un apice all'interno la riga sql=... mi da errore

    codice:
    <% 		  
    		  Valorecliente=rec("cliente")
    		 
    		 		  %>
                              <select name="cliente" size="1" id="cliente">
                                <option value="<% =(Valorecliente) %>">
                                  <% =(Valorecliente)%>
                                  </option>
                                <%
    'Scrivo la mia query sql
    sql = "SELECT * FROM rubrica where cognome<>'" & Valorecliente & "'"
    
    'E creo il recordset
    Set Reccliente = Server.CreateObject ("ADODB.Recordset")
    Reccliente.Open sql, Conn, 3, 3
    do while not Reccliente.eof 
    
    valore=Reccliente("cognome")
    nome=Reccliente("cognome") 
    
    nome = Replace(nome ," ","%20")
    
    response.write("<option value=" & nome &">" & valore &"</option>") 
    Reccliente.movenext 
    loop %>
    Prova così:
    codice:
    'Scrivo la mia query sql
    sql = "SELECT * FROM rubrica where cognome<>" & Valorecliente

  3. #3
    è sempre la solita vecchia storia del raddoppio degli apici...

    codice:
    'Scrivo la mia query sql
    ValoreCliente = Replace(ValoreCliente, "'", "''")
    sql = "SELECT * FROM rubrica where cognome<>'" & Valorecliente & "'")

  4. #4
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    non va...mi dice prevista fine istruzione

  5. #5
    ho lasciato inavvertitamente una parentesi in fondo. spero che tu l'abbia tolta...

  6. #6
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    si si..l'ho tolta...ho provato anche altre soluzioni ma niente...

    ho fatto anche il replace della variabile valorecliente...funziona ma ovviamente se ho un cliente chiamato d'andrea me lo visualizza d''andrea e non va bene

    non so più dove sbattere la testa

    però non mi arrendo...

  7. #7
    allora:

    1. ho capito che non ricevi più errori, e questo è un passo avanti
    2. controlla che nel db non ci siano davvero due apici
    3. posta il codice attuale

  8. #8
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    1. ho capito che non ricevi più errori, e questo è un passo avanti

    non penso di aver fatto un passo avanti...ho solo messo un replace per far diventare doppie le virgolette singole in modo che nell'sql non diano errore

    2. controlla che nel db non ci siano davvero due apici

    nel momento in cui metto il replace al codice, nel database l'apice raddoppierà quando salvo i dati visualizzati...in pratica cliente è d'andrea....vado a visualizzarlo e mi dice che è d''andrea al momento del salvataggio mi salverà d''andrea poi successivamente mi visualizzerà d''''andrea e così via

    3. posta il codice attuale

    eccolo...e grazie per l'interessamento

    [code]
    <%
    Valorecliente=rec("cliente")

    ----------> Valorecliente= replace(Valorecliente, "'", "''") <------------

    %>
    <select name="cliente" size="1" id="cliente">
    <option value="<% =(Valorecliente) %>">
    <% =(Valorecliente)%>
    </option>
    <%
    'Scrivo la mia query sql
    sql = "SELECT * FROM rubrica where cognome<>'" & Valorecliente & "'"

    'E creo il recordset
    Set Reccliente = Server.CreateObject ("ADODB.Recordset")
    Reccliente.Open sql, Conn, 3, 3
    do while not Reccliente.eof

    valore=Reccliente("cognome")
    nome=Reccliente("cognome")

    nome = Replace(nome ," ","%20")

    response.write("<option value=" & nome &">" & valore &"</option>")
    Reccliente.movenext
    loop %>

  9. #9
    1. grazie. nessun passo avanti? togli quanto suggerito e tieniti l'errore.
    2. è sbagliato salvare raddoppiando
    3. l'errore è conseguenza del 2


  10. #10
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    non ho capito bene...con l'errore è conseguenza del 2 intendi dire del punto 2 cioè che è sbagliato salvare raddoppiando gli apici?

    se si il codice iniziale non lo faceva (non raddoppiava gli apici)...perciò ho azzardato un replace

    ma se elimino il replace (cosa ovviamente che dovrò fare) si ritorna al primo post...col codice originario senza replace e l'errore che l'apice genera nell'istruzione sql

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 © 2026 vBulletin Solutions, Inc. All rights reserved.