Visual Basic e accesso ai DATABASE Gli oggetti di Visual Basic per l’accesso ai database sono: Data Access Objects (DAO) ActiveX Data Objects (ADO) Remote Data Objects (RDO)
Oggetto DAO: Il Controllo Data È un controllo che si trova nella casella degli strumenti e le sue principali proprietà sono: Connect : indica il DBMS a cui si vuole connettersi Databasename : che indica il percorso del file di db Recordsource : indica la tabella o query BOF Action/EOF Action : determina cosa succede se il controllo dati raggiunge l’inizio o la fine del database.
Oggetto: RECORDSET E’ un oggetto che rende gestibile la navigazione dei record della tabella attraverso il codice. In sintesi, RECORDSET è un oggetto su cui è psossibile invocare dei metodi e impostare proprietà per aggiungere, cancellare, modificare, ricercare o inserire dati posti nella base di dati. La sintassi da seguire per operare con l’oggetto Recordset è: <<Nome controlla data.Recordset.Proprietà=Valore>>
Oggetti per collegare i campi Il controllo data non visualizza i dati, rappresenta una via di transito tra il file di data base e i dati rappresentati da caselle di testo. Per ogni oggetto (una casella di testo associa un solo campo della tabella ) le principali proprietà sono: Datasource: rappresenta il collegamento tra la casella di testo e l’oggetto data Datafield : indica il campo da prelevare della tabella indicata nel recordsource.
Codice per la gestione dei db Refresh : metodo che serve per rendere definitive le modifiche, aggiorna il database. esempio data.refresh eof : è la proprietà dell’oggetto recordset (proprietà dell’oggetto data) che risulta vera quando si è arrivati alla fine del contenitore esempio data.recorset.eof recordcount : Restituisce il numero di record ai quali si è avuto accesso in un oggetto Recordset o il numero totale dei record in un oggetto Recordset di tipo tabella esempio numerorecord=data.recorset.recordcount (messo in un ciclo)
Movimenti nel Recordset Movefirst : istruzione che permette di muoversi all’inizio della tabella (primo record) MoveNext : istruzione che permette di muoversi al record successivo MovePrevious: istruzione che permette di muoversi al record precedente Movelast: istruzione che permette di muoversi alla fine della tabella (ulimo record)
Il metodo Addnew e Update Consente di aggiungere in coda un nuovo record al database al sua sintassi è: Data.recordset.addnew Per rendere permanenti le modifiche dopo l’inserimento dei dati occorre che venga eseguito il codice di aggiornamento ovvero: Data.recordset.update
Il metodo Delete e Edit Permette di cancellare un record su cui è posizionato il contenitore recordset la sua sintassi è: Data.recordset.delete Il metodo edit si utilizza per apportare modifiche ai campi del record corrente, esse vengono copiate nel buffer di transito. Dopo aver apportato al record le modifiche desiderate, utilizzare il metodo Update per salvare le modifiche la sintassi è: Data.recordset.Edit!Nome = “Pippo” Data.recordset.Update
Esempio di codice Si suppone di creare un form con un oggetto data (data1), delle caselle di testo, dei bottoni di comando (aggiungi, elimina, ecc. e quanto occorre per applicazioni. Per aggiungere record Private Sub cmdAdd_Click() Data1.Recordset.AddNew End Sub
Esempio di codice Per cancellare il record corrente Private Sub cmdDelete_Click() 'Questa operazione potrebbe generare un errore se è stato eliminato l'ultimo record o il solo record presente nel gruppo di record With Data1.Recordset .Delete .MoveNext If .EOF Then .MoveLast End With End Sub
Aggiornamento del database. Per rendere effettive gli aggiornamenti dal data base Private Sub cmdRefresh_Click() 'Necessario solo per applicazioni multiutente Data1.Refresh End Sub
Aggiornamento del record Per aggiornare il record inserito Private Sub cmdUpdate_Click() Data1.UpdateRecord Data1.Recordset.Bookmark = Data1.Recordset.LastModified End Sub
Esempio di codice: Ricerca Per posizionarsi ad un record da ricercare attraverso il campo Text1: Private Sub Text1_Change() Dim qry As String 'Costruisce la query qry = "SELECT * FROM studente" qry = qry + " WHERE cognome like '" + Text1 + "*';“ data1.RecordSource = qry data1.Refresh End Sub