Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Alternativa a Find (ADO) ?

 
.find "a='prova1' AND B = 'prova2'"
disponibili anche OR, NOT, BETWEEN, IS NULL ( quest'ultimo forse )

Ciao a tutti !
Questa la mia domanda :
Devo eseguire delle ricerche su un database, e fin'ora ho utilizzato il
metodo find. Il problema ora é che la ricerca non si basa piu' su una sola
colonna, ma su due.
Per esempio : Cerca nel recordset (A = 'prova1' e B = 'prova2')
Pensavo di risolvere la cosa con una query SQL, ma il problema é che la
ricerca si trova all'interno di un ciclo, e  quindi non posso fare un
Recordset.open MiaQuery,ecc.ecc.ecc..  ogni volta, altrimenti dovrei anche
chiudere il recordset a ogni ciclo (e questo rallenterebbe moltissimo il mio
programma).
Allora :
1- Esiste magari la possibilità di eseguire una query SQL senza dover per
forza eseguire un OPEN su un recordset ?
2- Esiste un modo per eseguire un FIND su due colonne invece che una sola ?
o magari anche un alternativa al Find ?
Ciao e grazie !!
DaVe
P.S: Uso VB6 + Sp3 , Win98, ADO.
--
Leave [KILL SPAM] from adress.

.find "a='prova1' AND B = 'prova2'"
Sicuro?
Fabio Pagano

 Sicuro?
Si! 
Almeno con DAO ( dove esiste il metodo .find dei recordset ) ha sempre
funzionato, daltronde la ducomentazione e' chiara: per il find si puo'
usare ogni costrutto come se fosse la parte WHERE di una query SQL
Al limite ho dei dubbi se esiste il .find con ADO ma se c'e' deve
funzionare.

...


 wrote in message
7v9lvv$vm0$2...@draco.tiscalinet.it...


Io sono fra questi.... certo, anche NT bisogna saperlo usare, e non
lasciarsi fregare dall'interfaccia grafica (con cui, anche sotto NT,
puoi far molto ma NON tutto)
Pensa che io ho server NT che vanno ininterrottamente da 1 anno senza
dare problemi.
Ciao!
Luca Menegotto


 Fabio Pagano
Mi cospargo il capo di cenere , non ho mai usato ADO , e a dire il vero
pensavo (temevo) che il metodo .find non lo avesse proprio.
non voglio commentare su compatibilita',stabilita' o scelte di progetto
di MS , anche perche' queste discussioni sono sempre sterili.
bye

 
<MODE_TEORICO_DI_DATABASE>
usi una ulteriore query sql con la clausola where che soddisfa tutti i
tuoi criteri e che ritorni anche solo la chiave univoca che la tua
tabella certamente ha ( e' il teorico di DB che parla ) , ti scorri
tutto il recordset ritornato e con il/i valori della chiave univoca fai
il find sul recorset Master che ha naturalmente la stessa chiave univoca
, in quanto i due recordset sono 'viste' della stessa tabella, e fai sul
master tutte le operazioni richieste
questo funziona sempre 
altrimenti apri direttamente il recordset Master con la clausola where e
te lo scorri un record alla volta
</MODE_TEORICO_DI_DATABASE>
lo so che puo' sembrare palloso ma ad occhio direi che dipende dalle
tendenza verso un maggior supporto verso RDBMS grossi a cui ADO dovrebbe
tendere
ricordatevi che Jet ( e quindi DAO) e' contemporaneamente intercaffia
d'accesso e RDBMS e quindi puo' fare piu' cose
hops , su questo chiederei una conferma in giro
P.S.
il bello delle news sono proprio le discussioni che nascono dalle
banalita'
Marco Colandrea

banalita'
D'accordo con Marco. Tra l'altro non mi sembra si stesse parlando di calcio.
EOF.
Fabio Pagano

 wrote in message
7vc360$b6e$4...@nslave2.tin.it...


funziona come in DAO.
E chi ha scritto 10 messaggi? Credo di essere stato l'unico a dire a Marco,
una sola volta, che in ADO la find supporta solo una colonna. Mi sembrava
doveroso nei confronti di entrambi e dei lettori di questo thread, onde
evitare di farvi perdere tempo
inutilmente cercando qualcosa che non c'e'.
Fabio Pagano

 programma).
Come avrai ormai capito il Find di ADO lavora su una sola colonna.
Se devi manipolare più colonne le possibilità sono due:
1) Quella già da te indicata, utilizzare una query SQL per estrarre ogni
volta i record che ti interessano. Tu dici che non vorresti farlo perchè la
query è dentro ad un ciclo, magari se ci spieghi più dettagliatamente cosa
fa questo ciclo potremmo essere di maggior aiuto.
2) Utilizzare il metodo Filter di ADO che lavora su più colonne e
praticamente ti fa vedere, del recordset corrente, solo quelle che
rispondono ai criteri indicati; vantaggio = il database viene interrogato
solo una volta; svantaggio = è un metodo lato client e lento, probabilmente
è più performante il sistema 1) se i record nella tabella sono tanti, quelli
estratti di volta in volta sono pochi e l'estrazione avviene utilizzando dei
campi indicizzati.
Ciao,
   <--< Nik >-->




Fabio Pagano wrote:
Molto seriamente, Marco ringrazia perche' ha imparato una cosa nuova
ciao