Newsgroup: it.comp.www.asp
Titolo: problema con l'SQL

mi è stato dato un database in Access con delle query già fatte, e io devo
creare un interfaccia per visualizzarle via web.
in una query, che in Access FUNZIONA perfettamente, è presente l'espressione
"LIKE", in un contesto del tipo:
"....WHERE indirizzo like 'milano'"
Questo criterio in asp non funziona, non dà errore, ma la query dà risultato
nullo.
Come posso fare?
grazie a chiunque mi darà una mano
monica

 ha scritto nel messaggio
news:v6_m9.44793$e31.9...@twister2.libero.it...


Ciao,
prova a mettere dopo il like la parola tra singolo apice e percento
esempio:
"SELECT * FROM [tabella] WHERE [campo] LIKE '%"&parola_da_cercare&"%'
ORDER BY ...;"
Fammi sapere.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Come posso fare?
Innanzitutto verifica che il recordset ritornato da ADO sia pieno
(response.write objRs.recordCount) dopodiche'... sei sicura che in access
funzioni? Che Versione?
Normalmente in SQL al comando LIKE vanno aggiunti degli asterischi e/o altri
caratteri quali Jolly.
Cosi'
LIKE '*milano' oppure LIKE '%milano'
trova tutti i record che finiscono per milano (di solito ACCESS vuole *,
mentre SQL server preferisce %)
LIKE 'milano*' ritorna tutto cio' che comincia per milano
Ci sono diversi altri caratteri Jolly per specificare altre cose come una
lettera mancante, un insieme di lettere da provare al posto di quella
mancante ecc...
la query che hai impostato tu invece e' equivalente a questa
WHERE miocampo = 'milano' che restituisce qualcosa solo se c'e' qualche
record che contiene esattamente quella parola e nient'altro.
Ciau
Andrea

Hello, Andrea!
You wrote  on Fri, 4 Oct 2002 08:45:36 +0200:
AV> Ci sono diversi altri caratteri Jolly per specificare altre cose
 AV> come una lettera mancante, un insieme di lettere da provare al posto
 AV> di quella mancante ecc...
Ciao
mi sai dire dove posso trovare un elenco di questi caratteri jolly e un mini
tutorial che mi spieghi per bene come impostare le query per ricerche in db,
magari anche come impostare ricerche da criteri provenienti da form?
Grazie.
Fede

 magari anche come impostare ricerche da criteri provenienti da form?
Facile: non esiste.
Esistono pero' diversi siti che affrontano in maniera molto chiara
l'argomento "Motore di ricerca", perche' a questo servono.
Il primo e' il solito 
www.aspitalia.com
, poi su 
MSDN.microsoft.com
 troverai
maggiori delucidazioni circa il linguaggio SQL e t-SQL
Tieni presente che, sebbene SQL sia un linguaggio universale, molti prodotti
parlano un dialetto diverso, anche prodotti della stessa casa come Access e
SQL Server, che per l'istruzione "LIKE" prevedono l'impiego di * e % quale
Jolly e ? e _ quale lettera Jolly, rispettivamente.
Inoltre SQL Server puo' sfruttare Index Server per le query testuali, cosa
che rende molto, ma molto piu' veloce una ricerca su un campo di testo
quando questa e' del tipo *parola*.
Un buon modo (modestamente ^____^*) per costruire una query partendo dai
dati contenuti in un form sta nel dividerla in due parti:
la selezione e la condizione.
La selezione costruisce la tabella su cui poi verranno applicate le
condizioni, e puo' essere tanto una "SELECT * FROM miatabella" quanto una
cosa piu' complessa come "SELECT f(1), f(2), ..., f(n-1), f(n), X.f(1), ...,
X.f(n) FROM miatabella INNER JOIN altratabella AS X ON f(m) = X.f(n-2)"
e di solito viene costruita internamente al server (insomma, dal creatore
dell'applicazione), anche se con un po' di pazienza si puo' costruire un
programmino che consenta di specificare su quali campi di quali tabelle
effettuare la select, del resto il querybuilder di Access questo fa.
La condizione, ossia la WHERE, invece va costruita mediante un ciclo FOR
EACH sul contenuto del form e per ogni giro all'interno del form devi
mettere una CASE SELECT che, in base al nome del campo...
strWhere = "WHERE "
strAnd = ""
FOR EACH strField IN request.form()
 select case strField
  case "nome"
   strWhere = strWhere & strAnd & " nome ='" & request.Form(strField)
   strAnd = " AND "
 case "cognome"
   strWhere = strWhere & strAnd & " cognome ='" & request.Form(strField)
   strAnd = " AND "
 case else
next
Questa cosa mettera' dentro la variabile strWhere  questi dati:
"WHERE nome ='qualcosa' AND cognome = 'qualcosaltro'"
una volta unita la selezione alla condizione avrai una bella stringa da
passare ad ADO per avere in cambio un recordset.
 L'esempio e' becero, perche' manca il controllo sul tipo di dati, per
esempio, ma e' utile per farti capire in che direzione ti tocca andare.
Buona fortuna
Andrea

 wrote in message
v6_m9.44793$e31.9...@twister2.libero.it...
