LEZIONI DI INFORMATICA
a cura del prof. Rocco Camera Scrivetemi

ESERCITAZIONI || terza | quarta| quinta |
ARGOMENTI DOCUMENTI Studenti al lavoro
ESERCITAZIONE N. 1: gestione files in visual basic

 Problema: Si vuole creare un file ad accesso casuale che contenga record con i seguenti campi:

I record devono essere aggiunti in coda agli altri ed essere consultati per eventuali modifiche.

Soluzione:

Prima di intraprendere il lavoro relativo al disegno delle maschere è opportuno costruire la struttura dei dati.
In un modulo basic (modulo1.bas) dichiareremo le variabili globali e il tipo record relativo alla richiesta.

MODULO1.bas


Public nr, rc As Integer
Public Type agenda
cognome As String * 30
nome As String * 30
indirizzo As String * 50
telefono As String * 15
e_mail As String * 25
End Type
Public rec_agenda As agenda


nr sarà utilizzata per sapere il numero dei record che sono via via accumulati nel file.
rc sarà utilizzata per posizionarsi nel file.
agenda è il tipo strutturato relativo al record.
rec_agenda è la variabile associata al tipo agenda.

A questo punto si può impostare un MDIform, ovvero una schermata iniziale che rappresenti il menu per altri 2 form che serviranno, rispettivamente, per inserire in coda i record e per visualizzarli/modificarli. Di seguito presento il codice visual basic. Lo studente, facendo click sul pulsante vedi può avere la schermata e le spiegazioni:

AGG_DATI.frm



Private Sub Ins_Click()
Load agg_dati
agg_dati.Show
End Sub
Private Sub vis_Click()
Load modif_dati
modif_dati.Show
End Sub
Private Sub exit_Click()
End
End Sub


AGG_DATI.frm


Private Sub Form_Load()
Top = 0
Left = 0
Open "dati" For Random As #1 Len = 150
rc = (LOF(1) / 150) + 1
End Sub
Private Sub registra_Click()
If dato(0) <> "" And dato(1) <> "" Then
rec_agenda.cognome = dato(0)
rec_agenda.nome = dato(1)
rec_agenda.indirizzo = dato(2)
rec_agenda.telefono = dato(3)
rec_agenda.e_mail = dato(4)
Put #1, rc, rec_agenda
rc = rc + 1
Else
MsgBox "Inserire almeno cognome e nome", vbCritical, ""
End If
End Sub
Private Sub esci_Click()
Close #1
Unload Me
End Sub


MODIF_DATI.frm


Private Sub Form_Load()
Top = 0
Left = 0
Open "dati" For Random As #1 Len = 150
nr = (LOF(1) / 150)
rc = 1
If nr > 0 Then
leggi_record (rc)
Else
MsgBox "L'archivio non contiene dati", vbCritical, ""
End If
End Sub
Sub leggi_record(byval x as integer)
Get #1, x, rec_agenda
dato(0) = rec_agenda.cognome
dato(1) = rec_agenda.nome
dato(2) = rec_agenda.indirizzo
dato(3) = rec_agenda.telefono
dato(4) = rec_agenda.e_mail
End Sub
Private Sub indietro_Click()
If rc > 1 Then
rc = rc - 1
leggi_record (rc)
End If
End Sub
Private Sub avanti_Click()
If rc < nr Then
rc = rc + 1
leggi_record (rc)
End If
End Sub
Private Sub registra_Click()
rec_agenda.cognome = dato(0)
rec_agenda.nome = dato(1)
rec_agenda.indirizzo = dato(2)
rec_agenda.telefono = dato(3)
rec_agenda.e_mail = dato(4)
Put #1, rc, rec_agenda
End Sub
Private Sub esci_Click()
Close #1
Unload Me
End Sub