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

    Problema su ricerca a campi multipli

    Sto mettendo nel sito su cui sto lavorando un piccolo motore di ricerca che mi dia risultati che corrispondano per 1 o + voci inserite.

    La stringa di SELECT che ho usato è la seguente
    codice:
    strSQL = "SELECT idcliente,ragsoc,citta,provincia,telefono1 FROM CLIFOR WHERE (ragsoc LIKE '"&ragsoc&"') AND (citta LIKE '"&citta&"') AND (provincia LIKE '"&provincia&"') AND (piva = '"&piva&"') AND (codfisc = '"&codfisc&"') AND (catmerc1='"&catmerc&"' OR catmerc2='"&catmerc&"' OR catmerc3='"&catmerc&"' OR catmerc4='"&catmerc&"' OR catmerc5='"&catmerc&"' OR catmerc6='"&catmerc&"' OR catmerc7='"&catmerc&"') AND (tipocom1='"&tipocom&"' OR tipocom2='"&tipocom&"' OR tipocom3='"&tipocom&"')"
    Ora, il problema è che se metto tutti i campi mi da il nominativo corrispondente, mentre se inserisco uno solo dei campi, non mi da nessun risultato.

    In cosa sbaglio?

  2. #2
    Che non puoi mettrerci gli AND sulla clausola WHERE, ti ricordo la tavola di verità dell'AND:

    V - V -> V
    F - V -> F
    V - F -> F
    F - F -> F

    Quindi la query ti estrae solo se tutte le condizioni sono VERE

    Ciao

  3. #3
    Effettivamente hai ragione... ma come posso risolvere il problema?

  4. #4
    Prova ad impostare al query così:

    SELECT idcliente,ragsoc,citta,provincia,telefono1 FROM CLIFOR WHERE (ragsoc LIKE '"&ragsoc&"') OR (citta LIKE '"&citta&"') OR (provincia LIKE '"&provincia&"') OR (piva = '"&piva&"') OR (codfisc = '"&codfisc&"') OR (catmerc1='"&catmerc&"' OR catmerc2='"&catmerc&"' OR catmerc3='"&catmerc&"' OR catmerc4='"&catmerc&"' OR catmerc5='"&catmerc&"' OR catmerc6='"&catmerc&"' OR catmerc7='"&catmerc&"') OR (tipocom1='"&tipocom&"' OR tipocom2='"&tipocom&"' OR tipocom3='"&tipocom&"')

  5. #5
    Scusami, ma in questo modo non posso fare la ricerca a + campi... se voglio sapere tutti i clienti della provincia di Udine, che hanno nella ragione sociale la dicitura coop, mettendo solo OR lui mi trova tutti i clienti della provincia di udine (anche non coop) e tutti quelli con la rag soc. coop (anche non della prov di udine).

  6. #6
    non capisco dove sia il problema usando l'and...tu stai chiedendo un and e un and devi usare

    è chiaro che devi aggiungere nella where il "campoX=" & campoX solo nel caso in cui il campoX del form sia stato riempito, altrimenti non ti trova nulla


  7. #7
    Originariamente inviato da santino83_11_04
    non capisco dove sia il problema usando l'and...tu stai chiedendo un and e un and devi usare

    è chiaro che devi aggiungere nella where il "campoX=" & campoX solo nel caso in cui il campoX del form sia stato riempito, altrimenti non ti trova nulla

    Mi vergogno un po a chiedere, ma come faccio a dirgli di usarlo solo se è stato riempito?

  8. #8
    codice:
    piva=request.form("piva")
    regione=request.form("regione")
    
    etc etc etc
    
    sql="select * from tabella where "
     if piva<>"" then sql=sql & " piva=" & piva
    if regione<>"" then sql=sql & " and regione='" & regione & "'"
    
    etc etc
    una cosa molto rozza è questa, fanne una migliore

  9. #9
    Ancora non ti conosco e già ti voglo bene
    Funziona alla perfezione.

    Ho 1 altro problemino, ma apro un nuovo 3ad per comodità

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.