Refus de supprimer un document ouvert dans une application (Permission denied)

Résolu
terog Messages postés 2 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 15 juin 2009 - 15 juin 2009 à 11:25
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 15 juin 2009 à 14:28
Bonjour à toutes et tous.

Après quelques nombreuses recherches infructueuses sur le net, voici un petit problème que je soumet à votre sagacité.

Un document word est généré et ouvert automatiquement dans MS/Word.
 var wdApp = new ActiveXObject("Word.Application");
 wdApp.Visible = true;
 wdApp.Documents.Open(strFileName);

L'utilisateur, via une page "html/javascript", a le choix, à travers une liste, de supprimer tous ces documents qu'il a créés.
Or, si un document est resté ouvert, l'instruction " fso.DeleteFile " renvoie une boîte de dialogue d'erreur avec le message bloquant "Permission denied".
 var filename : "1054113_AA"
 var confirmation = window.confirm("Etes-vous certain de vouloir annuler ce formulaire ? ")
 if (confirmation==true)
 {
     //Effacer le document word
     var fileSpec = filename + ".doc";
     var fso = new ActiveXObject("Scripting.FileSystemObject");
     if (fso.FileExists(fileSpec))
     {
          fso.DeleteFile(fileSpec, true);
     }
     ...
  }

Que me proposez-vous?
- Malgré qu'il soit ouvert dans word, essayer de quand même le supprimer via une astuce;
- Ou, à tout le moins, tester qu'il est ouvert et envoyer un message à l'utilisateur, demandant de le fermer?

Merci à vous, cher lectrice/lecteur.

3 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
15 juin 2009 à 13:06
Bonjour,
_ tu es sûr que DeleteFile possède 2 paramètres ?
   je ne crois pas ( mais peut-être me goure-je )
_ comme il est ouvert, le refus "semble normal"
_ essayer ( mais pas sûr non plus !! ) en passant par
   del avec window en  ligne de commande ?
                var w = new ActiveXObject("WScript.Shell");
                w.run ('cmd /c del "'+nom du fichier+'"');
   vaudrait mieux le fermer peut-être ?
Cordialement
3
terog Messages postés 2 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 15 juin 2009
15 juin 2009 à 14:14
Bonjour Bul3

1°) Oui, uniquement deux arguments disponibles pour cette instruction;
http://programming.top54u.com/post/Javascript-FSO-DeleteFile-Method.aspx


2°) Tout à fait. Rien à redire là-dessus.


3°) Je n'ai pas testé cette solution qui est un peu "cavalière" à mon goût [ Je l'a gardé en ultime recours... ].
Effectivement, le fermer, reste la solution la plus propre. Donc, cela revient à tester si ce fichier est "ouvert"...
Mais l'instruction js pour cela ? Mystère ?


Finalement, j'ai opté pour le traitement des exceptions. Mais, il y a toujours cette option du "test du fichier ouvert" qui m'interpelle. Si quelqu'un a une ouverture de ce côté, je suis preneur...



//Effacer le document word
  var fileSpec = URLsave + "print\" + filename + ".doc";
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  if (fso.FileExists(fileSpec))
  {
    try
    {
       fso.DeleteFile(fileSpec, true);
    }
    catch(err)
    {
       alert("Veuillez fermer le document, toujours ouvert dans MS/Word avant de le supprimer");
       return;
    }
  }

En tout cas, je te remercie de ton aide.
Bonne continuation.
@+
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
15 juin 2009 à 14:28
tester si un fichier est ouvert avec une autre application en js ??
je doute qu'on puisse ( remarque que : peu de langages le peuvent 
au moins simplement et directement !! )

sauf à créer son activeX qui le fasse ce test, c'est possible ,
mais try / catch ! tu as raison : c'est simple et ça  baigne toujours.
0
Rejoignez-nous