Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Ricerca avanzata

  1. #1

    Ricerca avanzata

    Ciao a tutti,
    avrei bisogno di implementare una ricerca avanzata con asp.
    In pratica avrei delle edit aventi come etichetta i nomi dei campi del database.
    Il problema che ho è che in teoria l'utente potrebbe lasciare alcuni campi vuoti...
    Io la query l'ho creata nel seguente modo

    codice:
    rsRisQuery.Source = "SELECT * FROM Tabella1 WHERE Campo1 = '" & Request.Form("campo1") & "' AND Campo2 = '" & Request.Form("campo2") & "' AND Campo3 = '" & Request.Form("campo3") & "' "
    ma non funziona perchè ovviamente se alcune edit sono vuote il risultato della query è nullo...

    Avreste qualche idea ?

  2. #2
    Prova così:
    codice:
    rsRisQuery.Source = "SELECT * FROM Tabella1 WHERE Campo1 LIKE '%" & Request.Form("campo1") & "%' AND Campo2 LIKE '%" & Request.Form("campo2") & "%' AND Campo3 LIKE '%" & Request.Form("campo3") & "%' "
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  3. #3
    Utente di HTML.it L'avatar di fede_00
    Registrato dal
    May 2004
    Messaggi
    279
    se la fai tutta su una riga in AND ti basta un solo risultato vuoto per rendere il tutto falso

    devi spezzare la query valutando caso per caso

    sql = "SELECT * FROM Tabella1 WHERE"

    if Request.Form("campo1") <> "" then
    sql = sql & " Campo1 LIKE '%" & Request.Form("campo1") & "%'"
    end if
    .
    .
    .
    così per gli altri casi

    poi alla fine apri il recordset con la query costruita

  4. #4
    Ti ringrazio molto.
    La clausola "LIKE" non mi funziona..
    Facendo cosi
    codice:
    Dim sQuery
    
    sQuery = "SELECT * FROM Tabella1 WHERE"
    
    if Request.Form("campo1") <> "" then
    	sQuery = sQuery & " Campo1 = '%" & Request.Form("campo1") & "%'"
    end if
    
    if Request.Form("campo2") <> "" then
    	sQuery = sQuery & " AND Campo2 = '%" & Request.Form("campo2") & "%'"
    end if
    Ottengo come risultato un recordset vuoto nonostante i campi che io inserisco siano presenti nella tabella...
    Dove sta l'errore ? Sarà qualche apice o virgoletta di troppo ?
    Grazie ancora

  5. #5
    Utente di HTML.it L'avatar di fede_00
    Registrato dal
    May 2004
    Messaggi
    279
    controlla bene il tipo di dati presenti nel campo del db

    la clausola LIKE è necessaria per i campi di tipo testo, l'uguale serve per i numerici

  6. #6
    Utente di HTML.it L'avatar di fede_00
    Registrato dal
    May 2004
    Messaggi
    279
    aspetta, c'è un errore nella tua query

    codice:
    sQuery = "SELECT * FROM Tabella1 WHERE"
    
    if Request.Form("campo1") <> "" then
    	sQuery = sQuery & " Campo1 = '%" & Request.Form("campo1") & "%'"
    end if
    
    if Request.Form("campo2") <> "" then
    	sQuery = sQuery & " AND Campo2 = '%" & Request.Form("campo2") & "%'"
    end if
    se campo1 sarà vuoto ti andrà in errore perchè avrai "... WHERE AND"

    fai così

    codice:
    sQuery = "SELECT * FROM Tabella1 WHERE 1=1"
    if Request.Form("campo1") <> "" then
    	sQuery = sQuery & " AND Campo1 LIKE '%" & Request.Form("campo1") & "%'"
    end if
    
    if Request.Form("campo2") <> "" then
    	sQuery = sQuery & " AND Campo2 LIKE '%" & Request.Form("campo2") & "%'"
    end if

  7. #7
    Ottimo grazie dei preziosi consigli!
    Ciao ciao

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.