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