PROGRAMMIAMO
VB - I File: archivi

Gestione di un semplice archivio

Un uso molto frequente dei file è quello di memorizzare i dati relativi a un insieme di oggetti dello stesso tipo. Per esempio potremmo voler realizzare l'archivio di una biblioteca con il titolo, l'autore e la collocazione di ogni libro; oppure creare lo schedario dei dipendenti di un'azienda, con il nome, il cognome, la qualifica e lo stipendio di ogni persona.

Per fissare le idee supponiamo di voler creare l'archivio di tutti gli studenti di una scuola. Per ogni studente si vuole memorizzare il nome, il cognome, la classe di appartenenza e l'età. Le informazioni di tutti gli studenti saranno salvate su un file di testo. Su questo file dovrà essere possibile eseguire due operazioni fondamentali: 1) inserire i dati di un nuovo studente, 2) cercare i dati relativi a uno studente (non ci occupiamo per ora del problema di cancellare uno studente dall'archivio).

L'inserimento dei dati di un nuovo studente può essere realizzato per mezzo di un semplice form con una serie di caselle di testo e un pulsante Inserisci:

Per l'inserimento dei dati il file verrà aperto in modalità Append e le informazioni saranno scritte in sequenza sul file stesso. Tutti i dati, sia quelli testuali (come Nome e Cognome), sia quelli numerici (come l'Età) vengono scritti sul file di testo come sequenze di caratteri.

Private Sub cmdInserisci_Click()
Dim Archivio As Integer

Archivio = FreeFile()

Open "student.txt" For Append As #Archivio

Print #Archivio, txtNome.Text
Print #Archivio, txtCognome.Text
Print #Archivio, txtClasse.Text
Print #Archivio, txtEta.Text

Close #Archivio

End Sub

La ricerca di uno studente in archivio può essere effettuata con un altro form simile al precedente, solo che ora le caselle txtEta e txtClasse saranno Locked, cioè non sarà possibile scrivere dati al loro interno (sono infatti caselle usate per visualizzare i risultati della ricerca):

Per cercare uno studente bisognerà aprire il file in modalità Input e leggere i dati in esso contenuti, finchè non viene trovato lo studente cercato (oppure finchè non si arriva alla fine del file). Poichè la lettura è sequenziale, per trovare un dato studente sarà necessario leggere i dati relativi a tutti gli studenti precedenti, nell'ordine esatto con cui sono stati memorizzati.

Private Sub cmdCerca_Click()

Dim archivio As Integer
Dim nome As String, cognome As String
Dim eta As String, classe As String
Dim trovato As Boolean

archivio = FreeFile()

Open "studenti.txt" For Input As #archivio

Do Until EOF(archivio)
  Line Input #archivio, nome
  Line Input #archivio, cognome
  Line Input #archivio, classe
  Line Input #archivio, eta
  If nome = txtNome.Text And cognome = txtCognome.Text Then
    txtEta.Text = eta
    txtClasse.Text = classe
    trovato = True
    Exit Do
End If
Loop

If trovato = False Then
  MsgBox "Studente non presente in archivio"
End If

Close #archivio

End Sub

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it