Toto3544
Messages postés24Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention28 avril 2011
-
28 nov. 2007 à 14:03
Toto3544
Messages postés24Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention28 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.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 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.
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 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)
Toto3544
Messages postés24Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention28 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.
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 20105 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
Toto3544
Messages postés24Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention28 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é?
pynuch88
Messages postés7Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention28 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é ...