[PB] Enregistrement sur fichier

Enregistrement sur fichier [PB] - VB/VBA/VBS - Programmation

Marsh Posté le 23-05-2005 à 10:36:56    

Bonjour ! Je suis débutant en VB et je n'ai jamais eu encore à manipuler des fichiers : je suis bloqué par une erreur que je n'arrive pas à enlever.
 
Voici la structure d'un de mes clients :

Code :
  1. 'Structure d'un client
  2. Type Client
  3.     numch As Integer       'Numéro de chambre
  4.     nom As String          'Nom
  5.     nbdej As Integer       'Nombre de petits-déjeuners
  6.     chambre As Boolean     'Indique si le client prendra
  7.                            'son petit déjeuner en chambre ou non
  8.     heure As String        'Heure
  9.     Dejeuner() As Dejeuner 'Tableau des petits-déjeuners
  10.     etat As Boolean        'Etat de la commande (vrai si effectuée, faux si annulée)
  11.     prix As Integer        'Montant de la commande
  12. End Type


 
Voici la structure d'un enregistrement :

Code :
  1. 'Structure d'un enregistrement
  2. Type Enr
  3.     numch As Integer      'Numéro de chambre
  4.     etat As Boolean       'Etat de la commande
  5.     nom As String         'Nom du client
  6.     nbp As Integer        'Nombre de personnes
  7.     chambre As Boolean    'Lieu
  8.     heure As String       'Heure
  9.     prix As Double        'Prix
  10. End Type


 
Voici la sub que j'appelle pour enregistrer :

Code :
  1. Sub Save_fic()
  2.     Dim nf, i, j As Integer
  3.     Dim zl As Enr
  4.    
  5.     nf = FreeFile
  6.     Open "fic.txt" For Random Access Read Write As #nf Len = Len(zl)
  7.     For i = 1 To nbcli
  8.         zl.chambre = TC(i).chambre
  9.         zl.etat = TC(i).etat
  10.         zl.heure = TC(i).heure
  11.         zl.nbp = TC(i).nbdej
  12.         zl.nom = TC(i).nom
  13.         zl.numch = TC(i).numch
  14.         zl.prix = TC(i).prix
  15.         Put #nf, i, zl
  16.     Next i
  17.     Close nf
  18.    
  19. End Sub


 
J'obtiens au choix l'erreur "Bad record number" ou bien "Bad record length" à la ligne du Put. Globalement je crois comprendre l'erreur mais je ne vois pas bien pourquoi il me fait ça : zl est bien de la bonne longueur, et le numéro d'enregistrement est valide... HELP ! Merci d'avance.

Reply

Marsh Posté le 23-05-2005 à 10:36:56   

Reply

Marsh Posté le 23-05-2005 à 11:33:21    

Question : tu ouvre le fichiers et réécis tous les clients ?
 
Edit :
 
Recherches complémentaires sur la fonction PUT :
 
PUT #Fichier, Octet, Variable
 
En clair, le traitement du fichier se fera en mode binaire...


Message édité par knakes le 23-05-2005 à 11:45:35

---------------
now : do nothing
Reply

Marsh Posté le 23-05-2005 à 15:49:36    

Utilise plutôt Write ou WriteLn (il me semble que les deux existent).
 
Mais disons que c'est pas vraiment optimal comme façon de faire... Tu peux pas plutôt utiliser une base de données?
 
Parce que là tu gères comment les doublons, les recherches, ... ?
 
Les fichiers plats, ça se fait plus trop dans ce genre de domaines :)
 
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed