Vous savez déjà comment créer un
fichier texte avec VisualBasic 6. Il existe une
autre forme de fichier qui permet des opérations de
lecture et d'écriture dans le fichier plus rapidement. Vous
allez apprendre comment les créer dans cet exercice.
-
Commencez par télécharger la feuille
E16_F1xx.frm et le projet Ex_16xx.vbp.
Téléchargez aussi le fichier E16_F1xx.Frx.
Placez-les dans le même répertoire.
-
Ouvrez le projet que vous venez de
télécharger. L'interface de l'exercice est déjà
prête.
-
La première tâche consiste à déclarer
un type de données. Ajoutez donc le code suivant dans la
section Explicit du code.
'Déclaration du type livre contenant toutes les données d'une carte
'Indication du genre de variable et de la longueur du contenu de chacune
Private Type Livre
Titre As String * 60
Auteur As String * 60
Edition As String * 60
Année As String * 4
Genre As String * 40
End Type
-
Déclarez ensuite,
toujours dans la section Explicit, une variable qui
servira à garder le numéro d'enregistrement.
Dim V_enr As Integer
Dim V_Num As Integer
-
Initialisez la
variable à 1 dans l'événement Form_Load et
attribuez-en la valeur à la propriété CAPTION de
l'étiquette ET_No.
Private Sub Form_Load()
V_enr = 1
'Initialisation des variables
V_Num = 1
ET_No.Caption = V_enr
'Initialisation de la valeur de l'étiquette ET_No
End Sub
-
Voici venu le temps
de créer la procédure de sauvegarde de l'enregistrement.
Ajoutez le code ci-dessous au bouton BO_Enregistrer.
Private Sub BO_Enregistrer_Click()
Dim V_Liv As Livre
'Initialisation d'une copie de l'enregistrement Livre
If V_enr > 1 Then
'Calcul de la valeur de V_Num
pour positionner la tête -->
de lecture
V_Num = Len(V_Liv) * V_enr
Else
V_Num = 1
End If
Open App.Path & "LIVRES.TXT" For Binary As #1
'Ouverture du fichier
'Initiation du contenu du type V_liv à l'aide
des zones de texte
V_Liv.Titre = ZT_Titre.Text
V_Liv.Auteur = ZT_Auteur.Text
V_Liv.Edition = ZT_Édition.Text
V_Liv.Année = ZT_Année.Text
V_Liv.Genre = ZT_Genre.Text
Put #1, V_Num, V_Liv
'Écriture de l'enregistrement dans le fichier
Close #1 'Fermeture
du fichier
End Sub
-
Essayez votre
programme. Entrez des données dans chacune des zones de
texte, puis cliquez sur le bouton Enregistrer. Si vous
désirez voir le résultat à ce moment-ci, ouvrez votre
fichier avec le bloc-notes.
-
Poursuivez votre
travail en ajoutant le script suivant au bouton
Récupérer.
Private Sub BO_Lire_Click()
Dim V_Liv As Livre 'Initialisation
de la variable
If V_enr > 1 Then
'Positionnement de la tête de lecture du fichier
V_Num = Len(V_Liv) * V_enr
Else
V_Num = 1
End If
Open App.Path & "LIVRES.TXT" For Binary As #1
'Ouverture du fichier
Get #1, V_Num, V_Liv 'Lecture
de l'enregistrement
Close #1
'Fermeture du fichier
'Affichage de l'enregistrement dans les zones de
texte
ZT_Titre = V_Liv.Titre
ZT_Auteur = V_Liv.Auteur
ZT_Édition = V_Liv.Edition
ZT_Année = V_Liv.Année
ZT_Genre = V_Liv.Genre
End Sub
-
Il ne reste que le
bouton Nouvelle Carte à compléter. Voici le script qu'il
doit contenir.
Private Sub BO_Carte_Click()
Dim V_Liv As Livre
'Déclaration de variable
V_Liv.Titre = "" 'Réinitialisation
de l'enregistrement
V_Liv.Auteur = ""
V_Liv.Edition = ""
V_Liv.Année = ""
V_Liv.Genre = ""
ZT_Titre.Text = "" 'Vidage
des zones de texte
ZT_Auteur.Text = ""
ZT_Édition.Text = ""
ZT_Année.Text = ""
ZT_Genre.Text = ""
V_enr = V_enr + 1
'Augmentation de la valeur de V_enr
ET_No.Caption = V_enr 'Affichage
de V_enr
End Sub
-
Sauvegardez votre
programme en remplaçant les xx par vos initiales.
Remplissez au moins 5 fiches de livres en cliquant sur le
bouton Enregistrer à chaque fois. Refermez-le
avant de le relancer. Cette fois, au lieu de cliquer sur
le bouton Enregistrer, cliquez sur Récupérer.
Application:
- Comme il est plutôt désagréable
d'avoir à fermer le programme pour passer en mode
lecture, apportez-lui les corrections nécessaires pour
qu'on puisse effectuer cette opération en restant dans le
programme. Utilisez, par exemple, une boîte
InputBox pour demander le numéro d'enregistrement
désiré, lequel sera affiché dans l'étiquette à cet
effet. Vous pouvez aussi utiliser toute autre solution qui
provoquera le même résultat. Sauvegardez le programme modifié
sous le nom Ex_16bxx.vbp.
|