Fichier a acces direct et variable d'enregistrement
piope
Messages postés61Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention17 juin 2004
-
26 avril 2004 à 10:10
diasool
Messages postés5Date d'inscriptionlundi 13 octobre 2008StatutMembreDernière intervention10 août 2010
-
17 oct. 2008 à 18:29
bonjour !! alors voila :
je cherche a gerer un fichier a acces direct (ouverture, lecture, ecriture) et mon probleme est que lorsque je declare une variable d'enregistrement, je ne peut la mettre autre que private, ce qui fait que je ne peut pas m'en servir dans une autre fenetre, je dois a chaque fois redeclarer une variable, pour le meme fichier.....
de plus, quand j'ecrit dans le fichier, il me met un caractere indesirable avant la chaine (petit carré noir) ma ligne est : put #1, 1 + n * len(VarEnreg), VarEnreg ' le 1 + n * len(VarEnreg) est arbitraire
voila, si vous avez des solution pour ces 2 problemes, je suis tout ouï, merci
A voir également:
Fichier a acces direct et variable d'enregistrement
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 26 avril 2004 à 10:47
Bonjour
1. Tu crées un module (Projet => Ajouter un module) et dans ce module, tu déclares ta variable d'enregistrement :
Public VarEnreg As ...
Elle sera accessible depuis tout le projet.
Bien sûr, il faut supprimer tous les
Dim (ou Private) VarEnreg As ...
2. Pourquoi 1 + n * len(VarEnreg) et pas n tout court ?
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 15 oct. 2008 à 00:17
Bonjour
Oui : c'est ton "dim i as integer" qui réinitialise la variable i à 0.
Il faut donner une valeur autre que 0 à i par l'instruction :
i=LOF(1)/Len(e)
i=i+1
Ceci, bien sûr, pour écrire à la fin du fichier.
diasool
Messages postés5Date d'inscriptionlundi 13 octobre 2008StatutMembreDernière intervention10 août 2010 15 oct. 2008 à 14:08
Diasl
je pense pas car le probléme n'a pas une relation avec l'initialisation de la variable i
même si elle est initialisé de 1 o 2 o 3 ...
je parle de l'écrasement des enregistrements aprés le redémarage de prog car chaque fois le code s'exécute dans un sens vertical
vous pouvez le tester !!!!!!!!
et merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 15 oct. 2008 à 15:31
Bonjour
Ce serait alors l'ouverture du fichier à accès direct :
open "c:\...emp.txt" for random accées as #1
à remplacer par
Open "c:\...emp.txt" For Random As #1 Len = Len(e)
sinon, la longueur d'enregistrement est initialisée à 1 octet.
diasool
Messages postés5Date d'inscriptionlundi 13 octobre 2008StatutMembreDernière intervention10 août 2010 15 oct. 2008 à 23:51
Diasl
Bonjour
vs n'avez pas encore saisie le problème
par exemple :
quand on redémarre le pc l'heur système
reste toujours exacte
car on a le pile
contre notre variable i qui se réinitialise chaque fois après le redémarrage ou bien la fermeture de l'application
il faut que la variable i conserve ça valeur et la longueur d'enregistrement n'a rien avoir avec cette conservation
diasool
Messages postés5Date d'inscriptionlundi 13 octobre 2008StatutMembreDernière intervention10 août 2010 17 oct. 2008 à 18:29
Diasl
module
type employé
nom as string
prenom as ...
code as integer
.....
end type
global e as employé
Code enregistrer open "employé" for random as 1 len= len(e)
e.nom=zon de text 1
e.prenom=zon de text 2
e.code=zon de text 3
.....
put #1,lof(e)\len(e)+1,e
close
lof(e)\len(e)+1 qui asure la protection des anciennes enregistrement
s
remarque
pour evité chaq fois d'ouvrir le fichier et ensuite le fermé
il vaut mieux faire ça :
dans le code de votre feuille
onLoad
open "employé" for random as 1 len =len(e)
unload close