Newsgroup: it.comp.lang.visual-basic
Titolo: da recordset a matrice VB.NET

Ciao a tutti,
Prelevo con una query sql una tabella e la posiziono in un recordset.
Dovrei memorizzare tali dati in una variabile per poter chiudere subito il
recordset e poter fare un'altra query.
Credo che la soluzione migliore sia memorizzare il tutto in una matrice a
2 dimensioni. Alle colonne do il nome dei campi della tabella (es: Nome,
Cognome, Indirizzo) ed alle righe semplicemente un numero intero
progressivo, in modo che ottenga in una matrice una riproduzione della
tabella del database e che se per esempio volessi ricercare Cognome del
quinto elemento potrei semplicemente ricavarmelo così:
Elemento = Matrice(Cognome, 5)
Ora.. i dubbi sono i seguenti..
La routine dev'essere utilizzabile per qualsiasi tabella (che può variare
quindi in dimensioni e struttura) e quindi dovrei creare una matrice
bidimensionale vuota e aggiungere man mano i dati, prelevandoli uno ad
uno dal recordset, ma come fare? Con redim? 
Mi potete fare un esempio? 
Grazie 1000

 recordset e poter fare un'altra query.
Non ho capito cosa c'entrano i recordset con 
vb.net
 e cosa intendi per
tabella (DataTable o tabella fisica?).
Ciao

 Mi potete fare un esempio?
Ora non conosco .Net ma non credo che questo sia il metodo migliore.
Innanzi tutto ad occhio ti serve un vettore di matrici.
Cioè da 1 a N (per ogni record) e in ogni cella hai la matrice
NOMECAMPO/Valore.
Sicuramente ti serve una funzione di ricerca che scorre tutto l'array da
1 a N o che comunque (se sai già quale record vuoi) ti ricerca
all'interno della matrice per nome campo, in modo da simulare
AdoRS("COGNOME").
Credo che non sarebbe molto performante.
Ma non puoi tenere aperti 2 recordset come in VB? 
-- 
Freccia@Bulldozer63 :D


E sarebbe l'ideale, solo che dovrei creare una connessione per ogni
tabella da leggere nel database Access, sarebbe corretto? Due recordset
aperti sulla stessa connessione al database non me lo permette in 
VB.NET

 
Allora ho un db access con 3 tabelle. Io avvio una connessione al database
all'inizio dello script con la classe OleDbConnection
Poi estrapolo i dati dalle tabelle del database eseguendo una semplice
query SQL e memorizzando il tutto in un record tramite la classe
OleDbDataReader.
Se però dovessi operare su piu' di un record contemporaneamente dovrei
necessariamente attivare una connessione per ogni record da utilizzare
visto che non si può tenere aperto più di un record per connessione.
Quindi ho pensato... forse e' meglio che avvio una connessione al DB, apro
la tabella, la memorizzo nel record, la salvo in una matrice, chiudo il
record, ripeto la procedura (tranne ovviamente la connessione al DB) per
tutte le altre tabelle con le quali devo lavorare e poi effettuo le
operazioni direttamente sulle matrici.
Quindi... E' meglio aprire tante connessioni e lavorare direttamente sugli
oggetti OleDbDataReader (record) oppure aprirne uno alla volta ed
esportarlo in una modalità (es variabile) più flessibile?
Grazie.

 aperti sulla stessa connessione al database non me lo permette in 
VB.NET
Ti ripeto: in .Net i recordset NON esistono, quindi non ne puoi avere
nemmeno uno aperto su una connessione.
Se invece parli di DataTable ne puoi avere quante ne vuoi, ma non aperte,
dato che .Net (almeno alla 1.1) lavora tutto in disconnesso.
Ciao
--
Reporting tool: 
http://www.neodatatype.net

 visto che non si può tenere aperto più di un record per connessione.
Ah, ok... adesso ho capito.
Si, .Net 1.1 permette un solo DataReader per connessione (non record).
Nulla ti vieta però di portarti il tuo bel "record" in una DataTable tramite
DataAdapter.Fill() e lavorare direttamente su quella.
Ne puoi avere più di una ed è sicuramente più comoda da maneggiare.
