Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870

    Dal form alla query strSQL

    :master: Dovrei eseguire una query su alcuni dati recuperati dal form; ho delle difficoltà perchè quando dal form mi arriva il valore selezionato, invece di arrivare il nome mi arriva giustamente l'ID, quindi un numero e la query pur non andando in errore, non estrae nessun dato dal database.
    codice:
    'Dati dal form
    COGNOME = Request.querystring("COGNOME") 
    CITTA = Request.querystring("CITTA") 
    TELEFONO = Request.querystring("TELEFONO") 
    
    'Esecuzione query
    strSQL = "select * From anagrafica WHERE 1=1"
    
    If COGNOME <> "0" then
       strSQL = strSQL & " AND COGNOME = '"& COGNOME &"'"
    End if
    
    If CITTA <> "0" then
      strSQL = strSQL & " AND CITTA = '"& CITTA &"'"
    End If
    
    If TELEFONO <> "0" then
      strSQL = strSQL & " AND TELEFONO = '"& TELEFONO &"'"
    End If
    come posso risolvere???

  2. #2
    Se i campi sono numerici:

    If COGNOME <> 0 then
    strSQL = strSQL & " AND COGNOME =" & COGNOME & " "
    End if
    e anche gli altri due allo stesso modo, senza apici
    E' nato www.lombardiamotori.it

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

  3. #3
    Il post cui fai riferimento (che quindi vedo che conoscevi già...) era in errore in queste righe....
    E' nato www.lombardiamotori.it

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

  4. #4
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Grazie, ma continua a non restituire nulla:
    codice:
    'Esecuzione query
    strSQL = "select * From anagrafica WHERE 1=1"
    
    If COGNOME <> 0 then
       strSQL = strSQL & " AND COGNOME = "& COGNOME &" "
    End if
    
    If CITTA <> 0 then
      strSQL = strSQL & " AND CITTA = "& CITTA &" "
    End If
    
    If TELEFONO <> 0 then
      strSQL = strSQL & " AND TELEFONO = '"& TELEFONO &"'"
    End If
    I campi COGNOME e CITTA nel dbase sono di tipo TESTO, il campo TELEFONO è di tipo NUMERICO.

  5. #5
    Allora è diverso.........la query andava bene prima, ma il problema è altrove perchè se le condizioni non sono vere deve eseguire solo la prima riga, e quindi estrarre TUTTI i records, non nessuno.........

    E' nato www.lombardiamotori.it

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

  6. #6
    Okkio perchè mi sembra che nella clausola WHERE tu possa inserire solo una volta l' AND .... prova a testare togliendone uno.

    Il problema esiste quando più di una condizione è verificata, quindi, potenzialmente, in ogni caso...
    E' nato www.lombardiamotori.it

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

  7. #7
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da teorema55
    Allora è diverso.........la query andava bene prima, ma il problema è altrove perchè se le condizioni non sono vere deve eseguire solo la prima riga, e quindi estrarre TUTTI i records, non nessuno.........

    Appunto il problema è altrove... inserendo response.write per i valori arrivati dal form ecco quello che ottengo:

    Se seleziono il valore 'Rossi' dalla select COGNOME:
    COGNOME: 11
    CITTA: 0
    TELEFONO: TUTTI
    Se seleziono il valore 'Rossi' dalla select COGNOME ed il valore 'Roma' dalla select CITTA: :
    COGNOME: 11
    CITTA: 4
    TELEFONO: TUTTI
    Se seleziono il valore 'Rossi' dalla select COGNOME, 'Roma' dalla select CITTA, '123456' dalla select TELEFONO: :
    COGNOME: 11
    CITTA: 4
    TELEFONO: 123456
    Se, invece, non seleziono nessun valore da nessuna select restituisce:
    COGNOME: 0
    CITTA: 0
    TELEFONO: TUTTI
    mi segui?

  8. #8
    C'è più di un problema: il primo è che non puoi confrontare un valore numerico (il codice contenuto nel tag <option value="...>, che poi viene acquisito tramite l'oggetto request) con un campo di testo (dici che nome e cognome sono testo nel database)

    In questo modo restituisce errore o nel migliore dei casi non estrae nulla.

    Devi confrontare "cognome" (per esempio) con il contenuto del campo id_cognome, o comunque del campo che contiene il CODICE che corrisponde al cognome.
    E' nato www.lombardiamotori.it

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

  9. #9
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Grazie è risolto!
    codice:
    'Esecuzione query
    strSQL = "select * From anagrafica WHERE 1=1"
    
    If COGNOME <> 0 then
       strSQL = strSQL & " AND ID_COGNOME = "& COGNOME &" "
    End if
    
    If CITTA <> 0 then
      strSQL = strSQL & " AND ID_CITTA = "& CITTA &" "
    End If
    
    If TELEFONO <> 0 then
      strSQL = strSQL & " AND ID_TELEFONO = '"& TELEFONO &"'"
    End If
    ... una curiosità... una volta chiamata la pagina della strSQL faccio stampare a video con response.write i valori che arrivano dal form, come sai mi stampa un nuemro... esiste un modo che sostituisca il testo al numero? mi spiego meglio:

    seleziono 'Rossi' dalla select COGNOME e mi stampa COGNOME = 11, non potrebbe invece stampare COGNOME = ROSSI


  10. #10
    Se le select-box vengono popolate automaticamente, nel tag <option value="...> anzichè mettere rs("id_cognome") ci devi mettere rs("cognome"), ma poi la query fatta in questo modo cessa di funzionare, la dovrai modificare.

    Altra cosa: ti consiglio di testare la query quando più di una delle condizioni è vera contemporaneamente, per controllare il funzionamento degli AND multipli, come ti dicevo...
    E' nato www.lombardiamotori.it

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

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.