Gestion Fichier (Acces Aléatoire)

Voir le sujet précédent Voir le sujet suivant Aller en bas

Gestion Fichier (Acces Aléatoire)

Message par Mr.Hicham le Mar Juil 19, 2011 12:14 pm

‘déclaration de la structure constituant un enregistrement dans le fichier

Code:

Structure sstag
Dim mat As Integer
<VBFixedString(20)> Dim nom As String
<VBFixedString(20)> Dim Ville As String
End Structure

Dim FileNum As Integer, RecLength As Long
Dim last
Dim stag As sstag 'déclaration d’une variable de type sstag

'ajout d’un enregistrement dans le fichier:
' Calcul de la longueur de l'enregistrement
RecLength = Len(stag) 'ici =44 (4+20+20) '4= c'est la taille d'un 'Integer en octets

' Récupérer le premier numéro de fichier libre :
FileNum = FreeFile()

' Ouvrir le fichier :
FileOpen(FileNum, "c:\stag.DAT", OpenMode.Random, OpenAccess.Write, , RecLength)
stag.mat = 4
'ou si depuis une zone de texte : stag.mat = txtmat.text
stag.nom = "kamali"
stag.Ville = "casa"
Dim last As Long 'noter que le numéro d'enregistrement est un long
'Pour connaître le nombre d'enregistrement, il faut diviser la longueur du fichier par la longueur
d'un enregistrement :
last = FileLen("c:\stag.DAT") / RecLength
'la fonction FileLen donne la taille d’un fichier en octets
'On ajoute 1 pour créer un nouvel enregistrement.
FilePut(FileNum, stag, last + 1)

'fermeture:
FileClose(FileNum)

‘lecture :
FileNum = FreeFile()

' Ouvrir le fichier :
FileOpen(FileNum, "c:\stag.DAT", OpenMode.Random, OpenAccess.Read, , RecLength)
'Pour lire un enregistrement (le premier par exemple):
FileGet(FileNum, stag, 1)
FileGet(FileNum, stag, 1)
MsgBox(stag.nom)

‘Affichage de l’enregistrement lu :
Msgbox stag.mat & « - « & stag.nom & « - « & stag.ville
‘ou dans des zones de texte ou labels

'fermeture:
FileClose(FileNum)

‘lecture sequentielle du fichier et affichage dans une datagridview:
‘avec gestion des exceptions :
FileNum = FreeFile()

' Ouvrir le fichier.
RecLength = Len(stag)
Try
FileOpen(FileNum, "c:\stag.DAT", OpenMode.Random, OpenAccess.Read, , RecLength)
With datagridview1.rows
.Clear() ‘effacer la gride
For i = 1 To last ‘du premier jusqu’au dernier enregistrement
FileGet(FileNum, stag, )
'ou FileGet(FileNum, stag,i )
. Add(stag.mat , stag.nom, stag.ville)
Next
End with
‘autre façon de faire la boucle:
While Not EOF(1) ‘tant que ce n’est pas la fin de fichier faire:
FileGet(FileNum, stag, )
.Add(stag.mat , stag.nom, stag.ville)
End While

'fermeture:
FileClose(FileNum)
Catch ex As IO.DirectoryNotFoundException
MsgBox("Répertoire invalide")
Catch ex As IO.FileNotFoundException
MsgBox("Fichier invalide")
Catch ex As Exception
MsgBox(ex.Message)
End Try

‘modification d’un enregistrement:
FileNum = FreeFile()

‘ouverture en mode lecture/ecriture:
FileOpen(FileNum, "c:\stag.DAT", OpenMode.Random, OpenAccess.ReadWrite, , RecLength)
‘ se positionner sur l’enregistrement à modifier avec FileGet (ici le 2 ème enregistrement)
FileGet(FileNum, stag, 2)
‘affecter les nouvelles valeurs :
'ou si depuis une zone de texte : stag.mat = txtmat.text
stag.nom = "Fadili"
stag.Ville = "taza"
‘on ecrit les données dans le fichier :
FilePut(FileNum, stag, 2)
'fermeture:
FileClose(FileNum)



Mr.Hicham
 
 

Nombre de messages : 464
Date d'inscription : 25/05/2010
Masculin

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum