Newsgroup: it.comp.lang.visual-basic
Titolo: [Stringa SQL]non riesco ad uscirne mi correggete?

Dovrei creare questo rs ma non funziona il filtro su T01Annullato (campo
True/False).
Nel senso che, nonostante alcuni record sia impostati a True non vengono
filtrati.
Dove sbaglio?
Set rst = dbs.OpenRecordset("SELECT * from T01Disegni WHERE T01Codice
Like '*" & Trim(frmCerca.txtCerca.Text) & "*' OR T01Dis1 Like '*" &
Trim(frmCerca.txtCerca.Text) & "*' Or T01Dis2 Like '*" &
Trim(frmCerca.txtCerca.Text) & "*' Or T01Dis3 Like '*" &
Trim(frmCerca.txtCerca.Text) & "*' Or T01Stampo Like '*" &
Trim(frmCerca.txtCerca.Text) & "*' Or T01Descrizione Like '*" &
Trim(frmCerca.txtCerca.Text) & "*'" & "' And T01Annullato = False'")
Grazie
R.Zanni
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 R.Zanni
Mattia
--
Mattia stacanovista...

 Trim(frmCerca.txtCerca.Text) & "*' And T01Annullato = 0")
Occhio anche ai vari * per le Like. Se lavori con ADO quelli devono
diventare %

La ricerca prevede di trovare tutti i records che soddisfacenti il 1 o
il 2 od il 3 od il 4 od il 5 e comunque l'ultimo deve essere soddisfatto
in true o false
Grazie per l'interessamento


[*Lupo* = 
LupoOrmaiR...@libero.it
 in
news:bljhvm$d1s0a$
1...@ID-174464.news.uni-berlin.de
] ha scritto:
Inoltre, visto che l'And sta da solo e vale per ogni altra combinazione,
metterei fra parentesi (aperta e chiusa) tutta la serie degli Or
Non si sa mai che quell'And possa essere abbinato solo all'ultimo Or...

 Grazie per l'interessamento
Figurati, ciao!


> Trim(frmCerca.txtCerca.Text) & "*'" & "' And T01Annullato = False
Dissentirei: Se ho ben capito gli basta che si verifichi un Or qualsiasi,
anche più d'uno _E_ l'And finale
Vedi il post sulle parentesi..., forse non necessarie ai fini sintattici, ma
certamente aumentano la leggibilità

 sintattici, ma certamente aumentano la leggibilità
Il risultato comunque è lo stesso:
1° Caso: "OR ... AND ..."
2° Caso: "OR ... AND ..."
3° Caso: "OR ... AND ..."
4° Caso: "OR ... AND ..."
5° Caso: "OR ... AND ..."
E' vero che è molto più leggibile con l'uso delle parentesi come dici tu ma
il risultato è lo stesso.
Ciao,
Mattia
--
Mattia stacanovista...

 tu ma il risultato è lo stesso.
Sì, il risultato è lo stesso, ma perchè scrivere di più e costringere il
motore ad interpretarlo/eseguirlo?

 il motore ad interpretarlo/eseguirlo?
In effetti la soluzione proposta da te č piů efficente. Perchč farlo
lavorare di piů quando non necessario?!? ;-)
--
Mattia stacanovista...

Tanto grazie per tutte le risposte,siete davvero gentili,
cmq, fatto tutte le prove ma non funzione un tubo!
E' come se l'ultima valutazione "And" non venisse considerata.
Che io metta a true o false il campo di un record questo viene comunque
listato nel rs.
Avete alternative o idee?
Grazie nuovamente


Io un'idea c'č l'ho:
prendi un programmino con winSQL o un qualsiasi programma che ti faccia
testare una query sul DB e copy la tua queri creata dalla tua applicazione
e fai le prove togliendo e mettendo Parentesi, mettendo 0 al posto di false
ecc..
Solo cosě vedrai velocemente qual'č l'errore logico che non fa funzionare la
tua query.
Ciao

 Avete alternative o idee?
Sě. Ci ri-pubblichi la nuova query? Grazie (ora č una questione di
principio).
PS: Giusto per completezza, cita il tipo di database, il metodo di accesso
(DAO o ADO) e, per ogni campo, il tipo esatto.


senza parentesi, è sicuramente riferito solo all'ultimo OR! quindi
racchiudendo tutti gli OR fra parentesi funzia
ciaociao

Bene,
il database č Access,l'accesso avviene con DAO 3.6.
La query č:
------------------
Set rst = dbs.OpenRecordset("SELECT * from T01Disegni WHERE
T01Codice Like '*" & Trim(frmCerca.txtCerca.Text) & "*' OR 
T01Dis1 Like '*" & Trim(frmCerca.txtCerca.Text) & "*' Or 
T01Dis2 Like '*" & Trim(frmCerca.txtCerca.Text) & "*' Or 
T01Dis3 Like '*" & Trim(frmCerca.txtCerca.Text) & "*' Or 
T01Stampo Like '*" & Trim(frmCerca.txtCerca.Text) & "*' Or 
T01Descrizione Like '*" & Trim(frmCerca.txtCerca.Text) & "*' 
And T01Annullato = False")
-------------------
I campi sono:
T01Codice = Testo
T01Dis1 = Testo
T01Dis2 = Testo
T01Dis3 = Testo
T01Stampo = Testo
T01Descrizione = Testo
T01Annullato = True/False
Questo č tutto.
Grazie per ancora per l'interesse che mi volgete


 T01Descrizione Like '*" & Trim(frmCerca.txtCerca.Text) & "*'
)


 La query è:
[cut]
E le parentesi che ti hanno già detto che servono, dove le hai messe?
Alberto

Avete ragione, sto facendo una grande confusione con i copia ed incolla,
...sono andato il loop.
Mi sa che farň meglio a fare 2 passi per schiarirmi le idee altrimenti
vi faccio perdere tempo a tutti,non mi pare il caso.
Grazie 


Caspita, in effetti era questione di mettere a posto quelle infami
parentesi.Continuavo ad inserirle nel posto sbagliato.
Grazie, senza il vostro aiuto sarei miseramente affondato.
Non avrei mai più pensato alle parentesi.
Grazie mille
R.Zanni
Spero di non disturbarvi per un bel pezzo


 Spero di non disturbarvi per un bel pezzo
mavalà!!!! :)
ciaociao

Questa è la stringa giusta:
Set rst = dbs.OpenRecordset("SELECT * from T01Disegni
      questa è la prima parentesi incriminata
WHERE(T01Codice Like '*" & Trim(frmCerca.txtCerca.Text) & "*' OR
 T01Dis1 Like '*" & Trim(frmCerca.txtCerca.Text) & "*' Or
 T01Dis2 Like '*" & Trim(frmCerca.txtCerca.Text) & "*' Or
 T01Dis3 Like '*" & Trim(frmCerca.txtCerca.Text) & "*' Or
 T01Stampo Like '*" & Trim(frmCerca.txtCerca.Text) & "*' Or
 T01Descrizione Like '*" & Trim(frmCerca.txtCerca.Text) &
"*')<---parentesi di chiusura
 And T01Annullato = 0")
Grazie a tutti
