Newsgroup: it.comp.lang.visual-basic
Titolo: ADO - Multi Recordset

Salve,
volevo sapere se in ADO è possibile in qualche modo gestire più recordset
che mi vengono restituiti da una stored procedures. Non sò se questo è il
termine esatto per definire questo tipo di dati.
Supponiamo che chiamo una stored e mi restituisce:
nomi  eta
---------
pino  21
gino 32
mino 45
lino  22
e successivamente nella stessa chiamata
citta regione
-------------
roma lazio
milano lombardia
perugia umbria
Presumo che se chiamo la stored con la proprietà open di un recordset possa
accedere solo alla prima 'tabella'.
Spero per lo meno di essermi spiegato.
Gianni

 se questo č il termine esatto per definire questo tipo di dati.
Il modo piů semplice č:
Nell'ultima parte della SP, esegui un select into generando una serie di
tabelle # o ## (a seconda della visibilitŕ che vuoi dare ai risultati).
Da VB, subito dopo aver chiamato la SP in maniera sincrona, apri tutti i
recordset che vuoi, ognuno basato su una delle tabelle # o ##.
Ad esempio, io faccio cosě:
All'apertura di una form in cui potrei aver bisogno di dati ottenuti da
elaborazioni complesse (tipico caso l'eplosione di piů distinte base in un
programma di produzione), chiamo una SP in maniera asincrona.
Nel tempo che l'utente impiega per riempire textbox, scegliere da listbox,
ecc..., la SP si completa.
Se l'utente chiama una funzione prima che la SP sia completata,
semplicemente metto un msgbox "attendere, elaborazione ancora in corso".
Questo dŕ al sistema altri due-tre secondi per completare.
Poi, a scelta dell'utente, richiamo ad esempio l'esplosione ramificata,
quella monolivello, quella totalizzata, ecc..., che non sono altro che
tabelle ## giŕ pronte nel DB.
Ciao
Alberto

Ehm...diciamo che la mia domanda non è proprio questa...io ho già una stored
che mi ritorna della cose...e li non posso farci quasi niente...è cosi!
Intendevo dire che la stored ritorna più recordset, mentre con ADO riesco a
leggere solo il primo e mi ignora quelli seguenti. Mi chiedevo se esisteva
un modo per passare al recordset successivo e prendere anche gli altri dati.
Gianni

 prendere anche gli altri dati.
Questo è il tuo quesito iniziale, e credo di aver già dato un suggerimento,
ma che richiede una piccola modifica alla SP.
Se proprio non riesci a modificarla (ma perchè non vuoi modificarla?),
allora vedi sopra.
Altra soluzione, brutta come la fame ma per certe necessità potrebbe anche
funzionare, è chiamare la SP chiedendo i risultati del command in uno stream
di testo. Poi te lo scorri con le funzioncine sulle stringhe, e individui i
dati che ti servono.
Ciao
Alberto

 recordset che mi vengono restituiti da una stored procedures.
non l'ho mai usato, per cui la butto un po' lě....(metto le mani avanti :-))
L'oggetto adodb.recordset ha un metodo NextRecordset, vedi che cosa riesci a
ricavarci
hth
--
Salutoni
Sergio

Stojkovic wrote:
questa è roba da "SQLserveristi" :-P
noi poveri "Accessomani"...capiamo male....
cmq...
considerando che una "vostra" stored è come un mini-programma.....
da quello che ho capito questa stored ti aggiorna /costruisce una serie di
tabelle....
se sta stored costruisce 3 tabelle ad esempio...dovrei fare in ado una
QUARTA interrrogazione che interroga queste 3 tabelle risultato...
o farti 3 recordset per ognuna delle 3 tabelle modificate (se non c'è verso
relazionarle fra loro con una SELECT...altrimenti...sai già come fare!)
ehm...al limite se non c'è verso relazionare(mi sembra strano però) e non
vuoi farti 3 recordset su 3 tabelle.....
non puoi con i risultati(campi) che reputi giusti costruirti una tabellina
di servizio e consultare quella?
quando non ti serve +un bel  DROP etc etc....
Bye!
--
%%============================%%
Il Wodkino Nazionale è a : 
www.martek.it
Forum: 
http://www.martek.it/go.asp?PortamiA=1
Bestiario: 
http://www.martek.it/go.asp?PortamiA=2
 (link bestiario del
ng)

 ricavarci
Perfetto...era proprio quello che stavo cercando. E funziona anche bene!
Gianni

 riesci a ricavarci
Un plauso.
Non l'avevo mai notato. Vedrň di usarlo al piů presto.
Ciao
Alberto

 Non l'avevo mai notato.
era solo per prendermi la rivincita per quel VbShowModal di ieri.....
:-)
--
Salutoni
Sergio

 :-)
Perchè 'rivincita'?
Io non ho saputo più niente...
Com'è finita?
Alberto

 Com'è finita?
sinceramente non lo so, ma se dovessi scommettere qualcosina.....
--
Salutoni
Sergio

 io no.
Azz...
Io non l'avevo notato...
Gli ho solo suggerito di mettere Option Explicit e di debuggare con Ctrl+F5
anzichè F5 e basta.
Immagino l'abbia capita anche lui (e si è premurato di ringraziare,
vedo....).
Ciao
Alberto

 Ctrl+F5 anzichè F5 e basta.
Non dirmi una cosa così: ho avuto una crisi da complesso di inferiorità per il
tuo lampo di genio, e adesso mi vieni a dire che era una botta di culo?
La laconica indicazione dell'option explicit + compilazione completa mi sembrava
proprio nel tuo stile, per segnalare "occhio che stai facendo una vaccata".
(tra parentesi, nulla impedisce che ci fosse, da qualche parte del codice una
dichiarazione const vbShowModal as integer = qualcosa, magari è proprio una
costante predefinita anche lei, ma il comportamento del programma sarebbe
facilmente spiegabile proprio con un vbShowModal = 0)
--
Salutoni
Sergio

 era una botta di culo?
Se vuoi non te lo dico...
Alberto