11 messaggi dal 17 gennaio 2006
Ciao a tutti
ho questa query che però funziona a metà

sql = "select * from ricetta where titolo_ita like '%"&parola&"%' or descrizione_ita like '%"&parola&"%' or ingredienti_ita like '%"&parola&"%' or citta like '"&parola&"' or regione like '%"&parola&"%' and attivo like 'SI'"

Mi spiego meglio.
se faccio una ricerca con "parola" nei campi titolo_ita, descrizione_ita e ingredienti_ita ottengo il risultato voluto.
tuttavia se cerco come parola una citta o una regione, che vi assicuro sono presenti nel db (access), la query mi restituisce zero.
Come devo fare????
vi prego aiutatemi perchè sto impazzendo
grazie
17 messaggi dal 04 ottobre 2007
ciao,
a getto mi viene di dirti 2 cose:

1) modificare la costruzione della sql mettendo le parentesi nelle condizione con OR e staccare la AND (a mio avviso è più facilmente comprensibile);

2) nell' AND togliere il LIKE, ma scrivere attivo = 'SI' visto che non fai un confronto su una parte della stringa;

Quindi:
select * from ricetta where (titolo_ita like '%"&parola&"%' or descrizione_ita like '%"&parola&"%' or ingredienti_ita like '%"&parola&"%' or citta like '"&parola&"' or regione like '%"&parola&"%) and attivo = 'SI'

per il problema potrebbe essere che un campo sia NULL quindi potresti usare la IIF.

è un'idea.

ciao
Simone
11 messaggi dal 17 gennaio 2006
Provato ma adesso non riesce a darmi nemmeno i risultati dei campi che prima funzionavano
:(
17 messaggi dal 04 ottobre 2007
info@stefano ha scritto:
Provato ma adesso non riesce a darmi nemmeno i risultati dei campi che prima funzionavano
:(

il mistero si infittisce...
prova a concatenare i campi:
SELECT *
FROM ricetta
WHETR (IIF(ISNULL(titolo_ita),'',titolo_ita) +
IIF(ISNULL(descrizione_ita),'',descrizione_ita) +
IIF(ISNULL(ingredienti_ita),'',ingredienti_ita) +
IIF(ISNULL(citta),'',citta) +
IIF(ISNULL(regione),'',regione) LIKE '%"&parola&"%)
AND attivo = 'SI'

comunque prova a fare dei test togliendo parte della query e capire ciò che ti dà problemi. non è facile capire al volo cosa non và in una query. verifica la sintassi di ciò che ti ho scritto visto che è moltissimo tempo che non lavoro in ACCESS

fammi sapere
11 messaggi dal 17 gennaio 2006
Ho scritto così
sql = "SELECT * FROM ricetta WHERE (IIF(ISNULL(titolo_ita),'',titolo_ita) + IIF(ISNULL(descrizione_ita),'',descrizione_ita) + IIF(ISNULL(ingredienti_ita),'',ingredienti_ita) + IIF(ISNULL(citta),'',citta) + IIF(ISNULL(regione),'',regione) LIKE '%"&parola&"%' AND attivo = 'SI' "

ma mi da questo errore
Missing ), ], or Item in query expression

poichè è la prima volta che concateno in questo modo, mi diresti dove sbaglio?
grazie
17 messaggi dal 04 ottobre 2007
manca la parentesi prima di 'AND attivo = 'SI''
11 messaggi dal 17 gennaio 2006
Ho inserito la parentesi ed ora la query va però non mi restituisce ancora i risultati per regione e città.
l'ho snellita facendo fare una ricerca solo su città e regione ed eliminando il resto ma nulla lo stesso. Eppure i valori che cerco sono nel db.
come te lo spieghi?
17 messaggi dal 04 ottobre 2007
1) quando fai i confronti con stringhe stai attento alla case sensitive...
2) controlla che i record dove vedi che c'é la città e la regione ci sia il campo attivo = 'SI' (attenzione al case sensitive anche quì)!!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.