BETA, la rivista ipertestuale tecnica
BETA, la rivista ipertestuale tecnicaBarra BETA
Sommario Registrazioni a BETA Redazione Liste/Forum Informazioni Indici BETA La rivista ipertestuale tecnica Collegamento al sito Web
BETA - Programmazione

BETA 2499.7 - Programmazione - Microsoft Visual Basic 6: Connessioni 'ADODB' dinamiche - Parte I | Parte II

Microsoft Visual Basic 6: Connessioni 'ADODB' dinamiche

Parte II

Alessandro Amatizi
Collaboratore, BETA

Il modello ad oggetti ADO

Sicuramente è il sistema più potente e versatile per utilizzare l'ADO in VB6. Consiste nel dichiarare ed inizializzare variabili di tipo Connection o Recordset, sulle quali eseguire qualsiasi istruzione SQL. Inoltre alla stessa connessione possono far riferimento più Recordset. Naturalmente tutto ciò che diremo per quanto riguarda i metodi AddNew, Update, UpdateBatch, Delete, etc.... vale anche per l'oggetto ADODC, con la differenza che in questo caso si ha un'applicazione più indipendente dalla fonte dati.
Per iniziare si devono dichiarare ed inizializzare le variabili per le connessioni ed i recordset:

********
Dim ConProva as Adodb.Connection     
   'Definisco una var. per la connessione
Dim RstProva, RstProva2 as Adodb.Recordset 
   'Definisco due (o più) var. per i recordset
Set ConProva = New Adodb.Connection  'Inizializzo le variabili
Set RstProva = New Adodb.Recordset
Set RstProva2 = New Adodb.Recordset
********
Praticamente l'istruzione 'Set' inserisce in fase di esecuzione delle connessioni di tipo Adodb. Una volta fatto ciò posso iniziare ad usare queste variabili:
********
Dim StringaConn as string
StringaConn = "Provider=Microsoft.Jet.OLEDB.3.51;
   Persist Security Info=False;Data_Source=C:\Prova\Prova.mdb"
ConProva.Open StringaConn
RstProva.Open "Select Cognome, Nome from Rubrica;", ConProva
Rstprova2.open "Select * From Rubrica where Cognome = 'Rossi';", ConProva
********
In questo caso abbiamo sfruttato una singola connessione per ottenere due Recordset, RstProva e RstProva2; il primo contiene tutti i cognomi ed i nomi della tabella 'Rubrica', il secondo contiene tutti i campi (ad es. Cognome, nome, Indirizzo, Città, etc....) di tutti i record della tabella 'Rubrica' in cui il campo Cognome è ugale a 'Rossi'. Questo è solo un semplicissimo esempio di come poter fare ricerche su database contenenti grandi quantità di dati. Esistono inoltre alcuni metodi molto efficaci per la modifica di questi dati; analizzeremo solo alcuni di questi (probabilmente i più importanti):

Metodi di modifica dei dati

Metodi moveFirst, moveNext, moveLast, movePrevious
Permettono di spostarsi all'interno di un recordset per cercare il record che ci interessa. Ad esempio potrei scorrere tutto un recordset prendendo o modificando di volta in volta i campi che mi interessano.
********
RstProva.moveFirst                'Mi metto all'inizio del Recordset
While not RstProva.EOF            'Finchè non arrivo alla fine del Recordset
    RstProva!Cognome = Ucase(RstProva!Cognome)
    RstProva!Nome = Ucase(RstProva!Nome)
    RstProva.Update               'Vedremo in seguito a cosa serve
    RstProva.MoveNext             'Mi sposto al prossimo record
Wend
RstProva.Close                    'Chiudo il recordset
ConProva.Close                    'Chiudo la connessione
*******
Praticamente ho reso maiuscoli tutti i campi cognome e nome del Recordset RstProva, cioè di tutta la tabella 'Rubrica'.

Metodi Update, UpdateBatch, Close
Il metodo Update serve per confermare e salvare le modifiche effettuate sul recordset. Il metodo UpdateBatch ha lo stesso compito, ma le modifiche vengono effettivamente salvate solo quando il recordset viene chiuso col metodo Close; questo metodo è molto utile, ad esmpio, nelle trasmissioni di dati: se la trasmissione non va a buon fine non si hanno dati parziali, i quali possono generare problemi.
Il metodo Close serve per chiudere il Recordset (è necessario se si vuole effettuare un'altra Open su quel recordset, ad esempio per fare un'altra query SQL ).

Metodi AddNew, Delete
Servono per inserire e cancellare Record da un Recordset. Anche queste modifche vanno confermate con il metodo Update (o UpdateBatch a Close). Un esempio di utilizzo di questi metodi è il seguente:

*******
RstProva2.movefirst
While not rstProva2.EOF
	If rstProva2!Nome = "Alessandro" then rstProva2.Delete
RstProva.UpdateBatch
	RstProva.MoveNext
Wend
Rst.Close
Con.Close
*******
Ho eliminato i record in cui il cognome è 'Rossi' ed il nome è 'Alessandro'. Naturalmente le modifiche hanno effetto solamente dopo la chiusura del Recordset, dato che ho utilizzato il metodo UpdateBatch.

Tramite queste poche (e molto basilari) conoscenze sull'ADO, si può iniziare a conoscere il mondo molto complesso delle connessioni e gestioni di Database in VisualBasic 6. E' comunque sempre consigliabile utilizzare strumenti di approfondimento per poter acquisire e sfruttare al meglio le potenzialità di questo linguaggio e soprattutto di questo metodo molto nuovo ed innovativo. Sicuramente infatti l'ADO è destinato e rimpiazzare e migliorare le funzioni di DAO e RDO, anche se ancora è alla sua seconda versione.


Articoli correlati

Altri Articoli della stessa Rubrica...

Siti Web

Elenco di siti consigliati da BETA... (est.)


Alessandro Amatizi è Collaboratore di BETA dal 2000; è raggiungibile su Internet tramite la redazione oppure all'indirizzo amatizi@nice.it.

Ultima revisione:
URL: http://www.beta.it/beta/bs029801/2499.7/b2499aa1.htm

Copyright © 1995-2000 BETA, tutti i diritti sono riservati. E' vietata la riproduzione senza autorizzazione dell'editore o dell'autore dentro i termini e le condizioni della Licenza Pubblica BETA (LPB)

BETA La rivista ipertestuale tecnica (http://www.beta.it/beta)email info@beta.it
BETA: Frontespizio | Registrazioni | Redazione | Liste/Forum | Indici | Guida | Copyright