Newsgroup: it.comp.lang.visual-basic
Titolo: database

Salve a tutti,
qualcuno sa dirmi come si fa a leggere i dati da un database per inserirli
poi in una collection come oggetti?
grazie

poi in una collection come oggetti?
cerca ADO e Recordset sulla guida ;-)
se incontri difficolta', chiedi pure spiegazioni su cio' che non e' chiaro.
ciao, hal

poi in una collection come oggetti?
E si ma...sono due cose diverse :)) Non è che se leggei i record di una
tabella questi poi vanno, o devono per forza a andare a finire in un
collection...quindi, la domda va spezzata in due :) Che è che non sai fare?
Leggere i record di una tabella, o piazzere quello che leggi in una
collection?
Vabbè, facciamo una cosa semplice e vediamo se riesco a dirti
come fare tutto :)
Supponiamo che tu hai un db di nome Mandrillo.mdb con
dentro una tabella di nome tbRagazze, cmposta dai seguenti campi:
-
CD_RAGAZZA: un progressivo giusto per avere tutto sotto controllo ;))
-
NOME_COGNOME:	ti segni il nome e il cognome per quando devo cercarla :))
-
ETA: la sua età
- NUMERO_CELLULARE: il suo numero di cellulare
- STATO:
se è libera o meno, metti un flag L se è libera Nl se non lo è :))
Premesso che se tieni un db di ragazze o sei un manico, o sei semplicemete
uno che sc**a come una bestia :)) ora ammettiamo che tu hai due rocord qui
dentro, quindi due ragazze; la tua tabella apparirà come segue:
__________________________________________________
|CD_RAGAZZA|NOME_COGNOME|ETA|NUMERO_CELLULARE|STATO|
|----------
|------------|---|----------------|-----|
| 1	   | Maria Rossi|22 |
0347....	     | L   |
|----------|------------|---|----------------|-----|
| 2        | Silvia Xxx |24 | 0338......     | NL  |
|----------
|------------|---|----------------|-----|
Bene, una volta che la tua
tabella è popolata andiamo a leggere i due record e li piazziamo in un
recordset, lo stesso che poi useremo per riempire la collection.
Nella tua
sub o funzione che sia, devi innanzitutto aprire una connessione al tuo db,
altrimento non puoi leggere una mazza dalla tua tabella...ti serve quindi
una cosa molto simile a questa:
    Dim cnn as ADODB.Connection
Dim strConnString As String
 
    Set cnn = New ADODB.Connection
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;"
    strConnString =
strConnString & "Data Source=C:\.....\Mandrillo.mdb;"
    strConnString =
strConnString & "Persist Security Info=False"
cnn.ConnectionString = strConnString
 
    cnn.Open
Ora hai
aperto una connessione al tuo db, e sei prondo per leggere la tua tabella.
NB: il provider che uso io si riferisce ad un mdb access 2000, tu specifica
una versione per il tuo db, così come il path.
Bene, andiamo a leggere
la tabella, e riempiamo stà collection. Per fare ciò, dovrai scrivere una
cosa molto simile a questa:
    Dim rstRagazze as ADODB.Recordset
Dim strSql as String 
    Dim clRagazze as Collection
    Dim Ragazza as
clsRagazza
 
    strSql = "SELECT * FROM TBRAGAZZE"
    Set
rstRagazze = New ADODB.Recordset
 
    rstRagazze.ActiveConnection =
cnn
    rstRagazze.Source = strSql
    rstRagazze.open
Così facendo
ora ti trovi un recordset popolato di tutti i campi delle due ragazze
presenti nella tabella; possiamo quindi 'piazzarle' nella collection. Nel
tuo codice dovrai scrivere una cosa del genere:
PREMESSA: logicamente
deve esistere un oggetto che conterrà le proprietà delle classi che vai ad
aggiunngere alla collection, ad esempio una classe clsRagazza che conterrà
le stesse proprità che rappresentano i campi della tabella o...insomma,
quelle che ti interessano.
    Set clRagazze = New Collection
Do While Not rstRagazze.EOF
        Set Ragazza = New clsRagazza
Ragazza.Codice = rstRagazze("CD_RAAZZA") 'CHE BRUTTA COSA!! :((
Ragazza.Nome = rstRagazze("NOME_COGNOME)
	.....
	..
	...
        '
una volta riempite le proprietà dell' oggetto ragazza, lo
'aggingi alla tua collection
        clRagazze.Add Ragazza
Set Ragazza = Nothing
	rstRagazze.MoveNext
    Loop
questo è quanto
:)) Semplice no!!
Ahhh se poi dovessi mai uscire con una delle ragazze
presenti nel tuo db, bhè ricordati che lo devi a me che ti ho postao questo
esempio ;))
Saluti...
PS: l' esempio può essere frainrteso,
SPECIFICO QUINDI CHE SONO BEN LONTANO DA CONSIDERARE UNA RAGAZZA COME UN
OGGETTO, le righe riportate qua sotto sono solo a scopo informativo, non me
ne vogliano le ragazze presenti nel ng, perchè non c'è nessun riferimento.
Avevo in mente di fare un tabella con tanti cloni di skunk ma...so per
certo che la reazione da parte dei partecipanti al ng sarebbe stata di
certo molto più violenta :))
--------------------------------
Inviato via 
http://usenet.iol.it
 


Ah, ti sei già messo all'opera...
direi che ha già risposto skunk...
ciao
ugo

 strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;"
io uso access '97 e non ho la minima idea di quali siano il mio provider e
la path, dove li devo cercare?
Grazie per la disponibilità.


Vediamo se mi ricordo bene:
Dim wksMain As Workspace
Dim dbsMioDatabase as Database
Dim rsTemp As Recordset
Set wksMain = DBEngine.CreateWorkspace("wksMain", "ADMIN", "")  'se non hai
usato protezione access
Set dbsMioDatabase = wksMain.OpenDatabase(mioPathdelDatabaseDaUsare)
Set rsTemp = dbsMioDatabase.OpenRecordset("select * from chenesoio",
dbOpenSnapshot)
ovviamente sostituendo nomi e percorsi...
ciao
ugo