Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Query tra 2 Recordset ADO

Salve a tutti.
Una domanda,
Ho fatto un programmino che recupera i dati da 2 file di testo e li
mette dentro a 2 recordset ADO creatui in memoria con NEW. Al modo di un
fornitore dati insomma.
Ora a me servirebbero i dati ottenuti da una query(Con JOIN) tra i due
recordset.
Sembra che tra i 2 non ci possa essere una relazione diretta.
e non ho trovato un granchè che faccia al caso mio nell'help ADO.
Sapreste darmi un consiglio o un'indizio o una soluzione? ;)
Lo so che sarebbe semplice creare un database di appoggio con le tabelle
già fatte, o dove crearle all'occorrenza. Ma ma visto che è soprattutto
per sapere 'se si può fare' e 'come si può fare'...
grazie a tutti
aloHa
elefante
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 recordset.
Attendo smentite ma direi che č impossibile! :-(
Spiacente... potresti ovviare con dei loop perň...

 Spiacente... potresti ovviare con dei loop però...
Acc!
temevo una risposta del genere.
il fatto è che non volevo utilizzare dei cicli.
pazienza userò un DB di appoggio.
grazie comunuqe.
(Comunque pure io attendo speranzoso smentite :))
aloHa!



Non mi risulta sia possibile una cosa del genere.. al
limite puoi 'simulare' una JOIN ma ti occorre in ogni caso un
ciclo ricorsivo..
Se ad esempio :
Rs1 contiene i codici dei clienti
Rs2 contiene i codici cliente più gli ordini relativi
ad ogni cliente.
Una volta costruiti i tuoi recordset, te li
ordini come meglio credi tramite la proprietà Sort.
Leggi Rs1 ricorsivamente e di volta in volta filtri il Rs2
in modo che ti faccia vedere solo gli ordini del cliente
attualmente in esame. Riduci quindi al minimo i tempi
di elaborazione, qualsiasi cosa tu abbia bisogno di
realizzare.
Do until rs1.eof
      StrCriteria = "IDCli2 = " & IDCli1
      rs2.Filter = StrCriteria
      Do until rs2.eof
            ........
            Rs2.MoveNext
      Loop
      Rs1.MoveNext
Loop
...ma sempre un loop è....
Ciao
 Valter

       StrCriteria = "IDCli2 = " & IDCli1
scusa, ovviamente era :
StrCriteria = "IDCli2 = " & Rs1.IDCli1...
Ciao
 valter

 
Beh mi pare comunque un buon loop.
grazie :)
elefante 
P.S.: Approposito qualcuno ha risolto il problema del metodo FIND 
con più parametri i ADO?
(sono ore che scartabello Google)


 con più parametri i ADO?
Da MSDN:
ADO 2.7 API Reference
[...]
Find Method
Searches a Recordset for the row that satisfies the specified criteria.
[...]
Remarks
Only a single-column name may be specified in criteria. This method does not
support multi-column searches.
Mi sa che non si può :(


Puoi utilizzare di nuovo la proprietà Filter
StrCriteria = "Nome = 'Elefante' AND Ditta = 'Centropaghe'"
rs.Filter = StrCriteria
if rs.eof and rs.bof then
   debug.print "non trovato/i"
else
   debug.print "trovato/i!!"
end if
Tieni presente che puoi costruire la stringa di filtraggio come meglio credi
( AND OR etc ) e utilizzare gli operatori nel modo consueto.
Altrimenti puoi aggirare l'ostacolo... se a priori sai quali saranno i campi
di ricerca ( magari una chiave composta da più campi ), nella select, oltre
ai singoli campi ne crei uno o più tramite alias del tipo...
(CampoK1 & CampoK2 & CampoK3) as CampoK
poi fai una cosa del genere :
MyString = "CampoK = " & text1.text & text2.text & text3.text
( o qualsiasi altra cosa, purchè congruente...)
quindi :
Rs.MoveFirst
Rs.Find MyString, , adSearchForward
é una schifezza... e ha mille limiti che non sto qui ad elencarti..
anche perchè a questo punto di conviene usare
direttamente una query SQL che ti restituisce un solo record
nel caso che esista.. fai tu...
Ciao
 valter