Accesso ai dati

Non potevo in questa guida non dare un cenno al controllo DATA anche se ormai divenuto obsoleto. Il controllo data permette di eseguire delle operazioni su una tabella di database (per noi Access) direttamente in visual basic, senza l'ausilio di Access. Costruiamo prima con Access una semplice tabella con i numeri di telefono degli amici:

Vogliamo ora leggere, modificare e aggiungere dati da questa tabella direttamente da VB. Costruiamo perciò il form inserendo anche il controllo data

Per poter colloquiare col database dobbiamo aggiungere prima dal menu "progetto"------> "riferimenti" , il DAO 3.51 (questo perché il database dell'esempio è in ACCESS97)

Come ci si collega ora al database? Semplicemente specificando il DatabaseName (percorso completo file database) e il RecordSource cioè il nome della tabella.

Private Sub Form_Load()
Data1.DatabaseName = App.Path & "\dati.mdb"
Data1.RecordSource = "amici"
End Sub
Il database di nome "dati.mdb" viene aperto

La control data viene settata sulla tabella "amici"

Ora, in fase di esecuzione, possiamo scorrere i valori della tabella tramite le freccette della control data.

La control data possiede diversi metodi, ma analizzeremo solo quelli che ci servono per completare l'esempio

 edit; permette di salvare le modifiche su un record:viene confermata da   update

 addnew ; permette di inserire un nuovo record:viene confermata da update

 delete: elimina il record corrente (quello visualizzato)

Refresh ricollega il recordset alla tabella aggiornando i dati

FindFirst [nomecampo] & espressione permette di ricercare un record specifico

e degli eventi:

 reposition: avviene quando passo da un record ad un altro

Proprio con l'evento reposition carico i dati dal control data alle caselle di testo per visualizzarli:

Private Sub Data1_Reposition()

Text1.Text = Data1.Recordset!nome & ""
Text2.Text = Data1.Recordset!cognome & ""
Text3.Text = Data1.Recordset!telefono & ""
End Sub
 Con Data1.Recordset![nomecampo] seleziono il campo
se cambio i valori nei text devo salvare le modifiche con il metodo edit:
On Error GoTo fine
Data1.Recordset.Edit
Data1.Recordset!nome = Text1.Text
Data1.Recordset!cognome = Text2.Text
Data1.Recordset!telefono = Text3.Text
Data1.Recordset.Update
Exit Sub
fine:
MsgBox Err.Description
 Come vedete l'assegnazioneData1.Recordset![nomecampo] è valida anche inversamente
Ora creo anche un nuovo record:
Private Sub Command2_Click()
Data1.Recordset.AddNew
id = Data1.Recordset!id
Data1.Recordset.Update
Data1.Recordset.FindFirst "id=" & id
Text1.SetFocus
End Sub
Quando viene creato un nuovo record, non si sa in che posizione sono del recordset; uso allora l'istruzione Data1.Recordset.FindFirst "id=" & id per essere sicuro di essere nel record appena creato.
Così invece lo cancello:
Private Sub Command3_Click()
Data1.Recordset.Delete
Data1.Refresh
End Sub
scarica qui l'esempio accessodati.zip Attenzione: questo esempio per funzionare necessita del file dati.mdb fornito con lo zip, che però deve trovarsi nel percorso della applicazione;scompattare perciò il file in una directory e lanciare il vbp direttamente con un doppio click

Torna all' indice