Newsgroup: it.comp.lang.visual-basic
Titolo: Copia di recordset ado e disconnessione

Salve a tutti, sono incorso in un problema dal quale non riesco a
venirne a capo...
Diciamo che io apro un recordset e che, mentre questo è ancora aperto,
lo copio dentro un altro recordset...
dim ObjRs as ADODB.Recordset
set ObjRs=New ADODB.Recordset
ObjRs.Open "Select...", ConnessioneMDB, adOpenStatic
           set ObjRsMODULO=New ADODB.Recordset
           set ObjrsMODULO=Objrs
           'qui ObjRsMODULO contiene i dati che voglio, ho provato
ObjRs.Close
Set ObjRs=Nothing
           'Qui ObjRsMODULO risulta chiuso.
Perche???
Cmq ho provato ad andare comunque avanti, creando un recordset
disconnesso..
           set ObjRsMODULO=New ADODB.Recordset
           set ObjRsMODULO.ActiveConnectio=Nothing
           ObjRsMODULO.CursorLocation=adUseClient
           set ObjrsMODULO=Objrs
           'qui ObjRsMODULO contiene i dati che voglio, ho provato
ObjRs.Close
Set ObjRs=Nothing
           'Qui ObjRsMODULO risulta chiuso.
Ora, ObjRsModulo è dichiarato in un file .bas..... Perchè non
funziona?
Forse che facendo coì assegno a ObjRsMODULO solo un puntatore a
ObjRs???
Come si fa a copiare veramente il contenuto del recordset???
Grazie, Vincenzo.
P.S.:Mi scuso in anticipo se la domanda posta possa essere già stata
trattata in passato, ho cercato con deja ma non ho trovato niente che
facesse al caso mio.
Vincenzo.

 Come si fa a copiare veramente il contenuto del recordset???
Occorre intendersi:
Vuoi avere due recordset uguali, ma da gestirsi separatamente? Apri il primo
e apri il secondo.
Vuoi duplicare i dati sul database, per esempio da una tabella a un'altra?
Esegui in comando SQL adeguato (per esempio Select * Into ... o Insert Into
...)

 il primo e apri il secondo.
Ci sarebbe anche il metodo Clone, ma non rammento se in ADO è disponibile
e/o se presenta problemi...

 
news:47c70176.03091...@posting.google.com
] ha scritto:
Voglio poter chiudere il primo recordset senza che questo influisca
sul secondo. Ho anche visto la possibilità di definire, tramite
.Fields, lo 'schema' del recordset e quindi, tramite un ciclo, copiare
il contenuto... Ma mi sembra molto 'brutto' esteticamente, poco
elegante....
Vincenzo.


 elegante....
Attenzione, generalmente lo "schema" indica la struttura, non i contenuti.
Comunque, per quel che ne so e se necessario con quelle modalità, non è
inelegante, mi pare l'unico modo possibile.
Però insisto: par di dedurre che vuoi trasferire/copiare i contenuti di un
record (quello corrente) in un altro e diverso, così per l'intero set di
record. Puoi fare come dici, certo, ma, di fatto, stai solo
creando/aggiungendo un nuovo record (per tutti i records) prelevandone i
dati/contenuti da un altro. Se tali dati provengono da tabelle diverse
(com'è ipotizzabile, anche se sostanzialmente "paragonabili") perchè non
usare un camando SQL come quelli indicati che, naturalmente, ammettono anche
una condizione Where?
Ovvero, perchè aprire due recordset e leggere i dati da uno per aggiungerli
all'altro quando questo può essere fatto (salvo particolarità ed esigenze
specifiche) con un comando SQL che risulterà in un certo senso "trasparente"
è più performante? Insomma, per capire meglio, dovresti raccontarci cosa
contiene il recordset di origine e quello di destinazione...

 contiene il recordset di origine e quello di destinazione...
Così, perchè volevo evitare un secondo accesso al database, perchè mi
era venuta la curiosità e perchè essendomi mollato con la tipa non ho
niente da fare la sera ;-).
Cmq mi sa che seguirò il tuo consiglio ed aprirò un secondo recordset
usando lo stesso comando sql..
Grazie, Vincenzo.