Newsgroup: it.comp.lang.visual-basic
Titolo: Collection, Array e DBGrid

    Ho un recordset contenente un certo numero di righe e due campi
(id_nome, nome).
    Vorrei popolare una Collection (ma mi va bene anche un array) con il
contenuto del recordset... come fare? (a patto che sia possibile).
    Dopodiche' voglio usare i due campi di ciascuna riga della
Collection (o dell'array) per popolare una DBGrid...
    Grazie in anticipo per eventuali help.
--
--
Posted from 
mail.eurobet.com
 [194.131.98.188]
via Mailgate.ORG Server - 
http://www.mailgate.org

 Collection (o dell'array) per popolare una DBGrid...
Curiosita': perche' questo passaggio intermedio della Collection (o Array)?
E, ammesso che tu lo ritenga necessario, perche', a questo punto, una
*DB*Grid e non, piuttosto, una Listview, o una Grid o qualcos'altro ancora?
Ciao.
Maurizio

 Mailgate.ORG is maintained online by Dario Centofanti
--
_________________________________________________________________________________
Antonio Caputo (Analyst Programmer)
Brickagent Enterprises Ltd - Eurobet Sports
10-24 Church Street West
Woking - Surrey
GU21 1HT- United Kingdom
Phone: 00441483722722
to...@eurobet.com
http://www.eurobet.com
Personals:
Mobile: 00393475891562
E-mail: 
capa...@tin.it
 - 
cap...@libero.it
Home Page (WORK IN PROGRESS): 
http://www.freeweb.org/NewEntry/AntonioCaputo/
_________________________________________________________________________________


 wrote in message 387DA18E...@eurobet.com...


Dall'MSDN
Metodo Clone (ADO)
Crea un oggetto Recordset duplicato da un oggetto Recordset esistente. Se lo
si desidera, č possibile specificare che il clone sia di sola lettura.
Sintassi
Set rstDuplicato = rstOriginale.Clone (TipoBlocco)
Valori restituiti
Restituisce un riferimento all'oggetto Recordset.
Parametri
rstDuplicato   Variabile oggetto che identifica l'oggetto Recordset
duplicato che si sta creando.
rstOriginale   Variabile oggetto che identifica l'oggetto Recordset che si
desidera duplicare.
TipoBlocco   Valore LockTypeEnum che specifica il tipo di blocco del
recordset originale o un recordset di sola lettura (opzionale).
Costante Descrizione
adLockUnspecified Clone creato con lo stesso tipo di blocco dell'originale
(impostazione predefinita).
adLockReadOnly Clone di sola lettura.
Osservazioni
Utilizzare il metodo Clone per creare piů oggetti Recordset duplicati, in
particolare se si desidera mantenere piů di un record corrente in un dato
gruppo di record. L'utilizzo del metodo Clone č piů efficace rispetto alla
creazione e all'apertura di un nuovo oggetto Recordset con la stessa
definizione dell'originale.
Il record corrente di un clone appena creato viene impostato sul primo
record.
Le modifiche apportate a un oggetto Recordset sono visibili in tutti i
relativi cloni, indipendentemente dal tipo di cursore. Dopo avere eseguito
Requery sul recordset originale, i cloni non saranno tuttavia piů
sincronizzati con l'originale.
Chiudendo il recordset originale non si chiudono le relative copie e
chiudendo una copia non si chiude l'originale o alcuna delle altre copie.
Č possibile clonare solo oggetti Recordset che supportano i segnalibri. I
valori dei segnalibri sono intercambiabili, vale a dire che un segnalibro di
un oggetto Recordset fa riferimento allo stesso record di tutti i relativi
cloni.
Spero serva


Innanzi tutto scusate la duplicazione del post credevo non fosse partito il
primo.
Secondo rileggendo mi sono accorto che non è specificato se il clone non
agisce sul DB, quindi potrebbe essere inutile.
Proviamo allora con gli array e le collection.
1) Con al collection
bisogna creare un oggetto collection con dim collezione as new collection
un UDT, o un oggetto che riproduca il recordset come campi e tipi.
dopo di che si scorre tutto il recordset e si aggiungono i vari record
do while recset.eof
    UDT.c1=recset!c1 oppure obj.c1=recset!c1
    e così via per tutti i campi del record
    dopo di che...
    * collezione.add udt, "chiavefacoltativaperindirizzamento" (se inserisco
un elemento con chiave "pippo" collezione(pippo) si riferisce a
quell'elemento)
    recset.movenext
loop
Piccolo problema pare che la collection non permetta la modifica dei suoi
elementi, ma che sia necessario prima togliere il vecchi e poi reinserire il
nuovo, questa è una fonte di un testo su VB5, non credo sia cambiato con
VB6, ma smanettando con le collezioni ho avuto comportamenti diversi a
seconda del metodo usato (a chi interessa posso spiegare il tutto via mail)
2) Con un'array
sostanzialmente il discorso non cambia, l'unica differenza sta
nell'inserimento del record nell'array, quindi cambia la riga con il "*"
davanti che diverrebbe
    redim preserve array(ubound(array())+1)
    attenzione l'array deve essere dichiarato senza dimensioni dim array() e
subito dopo inizializzato a 1 con redim array(1), altrimenti l'Ubound si
incavola.
Vantaggi l'array è solo sequenziale, se cancelli un elemento dal mezzo lasci
un buco, ma è molto semplice da gestire, la collection è più complessa, ma
più veloce, e permette di posizionarsi su un elemento senza doverla scorrere
tutta come l'array, nel caso specifico credo sia meglio l'array però data
l'ambiguità della modifica di un elemento della collection.
PS: DarSch e PF sono al stessa persona uniformerò tutto a DarSch appena
posso scusate l'equivocità.

Ciao,
per avere un array da un recordset esiste il metodo
GetRows degli oggetti recordset.
Il metodo restiusce un array bidimensionale columns-by-rows invece
che il solito rows-by-columns quindi lo devi trattare opportunamente.
teddy...@hotmail.com
ICQ 7044062
Como - Italy