Guida al Visual Basic: Accesso ai dati
Non potevo in questa guida non dare un cenno al controllo DATAanche 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 ilDatabaseName (percorso completo file database) e il RecordSourcecioè 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 apertoLa 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 daupdate 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 & “” |
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’assegnazione Data1.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 |