Problème fermeture fichier

Toto3544 Messages postés 24 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 28 avril 2011 - 28 nov. 2007 à 14:03
Toto3544 Messages postés 24 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 28 avril 2011 - 28 nov. 2007 à 15:42
Salut à tous.

J'ai un problème pour manipuler des fichiers.
Je m'explique. Je souhaite ouvrir un fichier .csv en mode Input pour récupérer des infos dont j'ai besoin juste après, puis réouvrir le même fichier mais en mode Append pour ajouter des valeurs.

je fais donc un:

Open "monfichier" for Input "numéro de fichier"

je fais ce que j'ai à faire dedans, puis

close #"numéro de fichier"

jusque la ça va.

Puis je veux le réouvrir

Open "monfichier" for Append "numéro de fichier"

Et la erreur 55, le fichier est déjà ouvert, alors que je l'ai fermé juste au dessus.

Quelqu'un aurait-il une solution?

D'avance merci.

9 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
28 nov. 2007 à 14:19
Salut,

Tu ne mets pas de guillemets dans ton instruction close au moins ?

Pas de On Error Resume Next dans ton code ? Si c'est le cas, tu peux très bien planter entre le Open et le Close, et continuer ton code sans vraiment fermer le fichier ...

As-tu essayé le mode "Pas à pas" pour exécuter ton code ? Tu verras ainsi si tu exécutes la ligne "Close".

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
28 nov. 2007 à 14:33
Salut et Salut Econs,


Il se peut que, entre le moment ou tu l'ouvres/fermes avec Input puis que tu le ré-ouvre dessuite aprés, que windows, n'a pas dans terminer ton instance dans ses entrailles dés la première overture et fermeture, car ton code est instantané.


Essaye pour vérifier mes dire, de faire la deuxième partie de ton code(ouverture avec Append), de le mettre dans un bouton à part...Si cela vient de là, tu pourrais faire avanr de le ré-ouvrir une petite pause de 1 voir 2 secondes(Sleep ou GetTickCcount)


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
Toto3544 Messages postés 24 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 28 avril 2011
28 nov. 2007 à 14:44
Salut,

J'ai un on error goto dans ma fonction et le code ne plante pas entre le open et le close de la première ouverture.
J'ai éxécuté en pas à pas et le close est bien exécuté.


Sinon, j'ai déjà essayé de faire un sleep de 2s entre les 2 ouvertures, mais cela ne change rien.


Je continu à chercher.


Merci pour vos réponse
0
Toto3544 Messages postés 24 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 28 avril 2011
28 nov. 2007 à 14:51
N'est-il pas possible de forcer la fermeture d'un fichier, ou de tester si un fichier est déjà ouvert?

Là je bloc complètement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 5
28 nov. 2007 à 15:00
salut toto3544
salut econs,
salut exploreur,

bon voilà la politesse...c'est fait...

l'instruction Open for input peut très bien fonctionner meme si le fichier est ouvet par une autre appli... par contre l'open for append  nécessite l'accès exclusif à ce fichier par l'appli.
donc il se peut que ton fichier soit locker par un autre process qui n'a rien a voir avec ton appli.
essai de faire un open for input lock read write ...et si cela plante c'est que tel était le cas... sinon, va falloir encore réfléchir

il est généré par quoi ton csv ?

cordialement

Pat

 Don't Worry , Be Happy
0
Toto3544 Messages postés 24 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 28 avril 2011
28 nov. 2007 à 15:21
Effectivement, ca plante aussi avec open for input lock read write .
Mais alors comment faire pour libérer mon fichier des autre processus, car il n'était pas ouvert mon fichier. je vois pas quel processus il était utilisé?
0
pynuch88 Messages postés 7 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 28 novembre 2007
28 nov. 2007 à 15:30
Ton fichier n'est pas en lecture seule au moins ? ...

Sinon, le fichier se trouve sur un serveur ? si c'est le cas une application d'un utilisateur doit utiliser le csv, la seule solution et de forcer les autres utilisateurs a fermer leur application.

Sinon, quand tu as fait tes tests tu n'as pas eu de plantage en l'Open et le Close ? car dans ce cas la premiere fois le fichier a été ouvert et ne s'est jamais fermé ...
0
pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 5
28 nov. 2007 à 15:38
Il y en a forcément un...
le programme qui génère ce CSV le ferme t il correctement ?

après reboot du poste, sans lancer aucune autre appli, est ce que cela marche ?

Pat

 Don't Worry , Be Happy
0
Toto3544 Messages postés 24 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 28 avril 2011
28 nov. 2007 à 15:42
Merci à vous et en particulié à pneau. Car c'est grâce à ta remarque que je me suis mis à chercher quel était le processus qui utilisait mon fichier.

En faite une autre procédure ouvrait le fichier mais ne le fermait pas car elle plantait et je ne m'en était pas rendu compte. Vraiment trop nul!

donc ca marche.
Encore merci.
0
Rejoignez-nous