Problème Suppression Dossier

espritclub Messages postés 6 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 16 juin 2010 - 15 juin 2010 à 09:49
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 16 juin 2010 à 09:08
Bonjour,

Je travaille actuellement sur une appli web qui doit après un traitement supprimer un répertoire via une dll développée en VB.

Le chemin du répertoire que elle construit de façon dynamique et stockée dans une variable.
Hors ce répertoire ne se supprime. je n'obtiens aucune erreur, mais je ne n'obtiens aucune effet non plus. Hors si je rentre à la chemin du répertoire en dur directement dans la commande FSO.delete ("monChemin\en\dur"), cela fonctionne. J'ai vérifié le chemin d'accès construit dynamiquement et stockée dans une variable, il est ok.

Info : Mon appli et la dll sont sur un serveur web. Le répertoire à supprimer est sur un serveur de fichier.

Voici mon code qui ne fonctionne pas:

Dim strPathTmpDir
  
strPathTmpDir = CStr("\\serveurFile01\preprod$\Upload\FlowWork\Inst\TmpDir" & StrIdLogin & strInstID) 'renvoi la valeur : "\\serveurFile01\preprod$\Upload\FlowWork\Inst\TmpDir\\user1_549110610162440"
Set FSO = CreateObject("Scripting.FileSystemObject")   
FSO.DeleteFolder strPathTmpDir, True



Hors si je mets  dans le code le ligne ci-dessous, cela fonctionne.
FSO.DeleteFolder "\\serveurFile01\preprod$\Upload\FlowWork\Inst\TmpDir\\user1_549110610162440", True




J'ai aussi essayer la commande Kill, j'ai aussi déclarer la variable en str, j'ai aussi fait un Cstr de la variable....



Voila, si je n'es pas été assez clair, N'hesitez pas.
Merci d'avance.

++




















Benjamin

12 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
15 juin 2010 à 14:01
Salut,

Une seule solution possible, tes variables 'StrIdLogin' & 'strInstID' sont mal renseignés.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
15 juin 2010 à 14:03
Ah quoi que...

As-tu l'underscore dans le login ou l'ID ???

user1_549110610162440

StrIdLogin & "_" & strInstID

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
espritclub Messages postés 6 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 16 juin 2010
15 juin 2010 à 14:25
Salut,

Oui j'ai effectivement mal recopié le code (dsl). J'ai bien fais la concaténation avec le underscore. J'ai aussi fais un test en local (Directement sur le serveur web) de la suppression d'un fichier directement sur le disque "C:" avec un nom répertoire simple du genre "c:\test".
J'obtiens le même problème. En dur ca passe et si je passe par une variable, la suppression ne fonctionne plus.

N'hésites pas si tu as d'autres piste, je suis preneur.
Merci à toi en tout cas.


Benjamin
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
15 juin 2010 à 14:30
Bonjour,

Avant de lancer la suppression, as-tu affiché ta variable dans un messagebox pour vérifier qu'elle contient exactement la ligne à l'identique de celle qui fonctionne en dur?


L'expérience, c'est une connerie par jour, mais jamais la même..
0

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

Posez votre question
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
15 juin 2010 à 14:37
T'as essayé le msgbox de teste pour voir le chemin d'accès complet avant la suppression ?

strPathTmpDir = CStr("\\serveurFile01\preprod$\Upload\FlowWork\Inst\TmpDir" & StrIdLogin & strInstID) 'renvoi la valeur : "\\serveurFile01\preprod$\Upload\FlowWork\Inst\TmpDir\\user1_549110610162440"
msgbox(strPathTmpDir)
Set FSO = CreateObject("Scripting.FileSystemObject")   
FSO.DeleteFolder strPathTmpDir, True


Perso regarde bien il doit y avoir une différence au niveau de tes variables, je me souviens avoir passé 2h à étudier deux requêtes SQL que je croyais à 100% identiques, l'une fonctionnait et l'autre non ! J'étais comme un fou, j'ai appelé ma femme (qui n'y connais strictement rien en programmation), et je lui ai demander de venir vérifier la différence entre les deux chaines de textes, et en l'espace de 30 seconde, elle m'a fait remarqué un caractère différent dans le nom d'une colonne...

Ps: tiens je viens de remarquer un bug dans la coloration.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
15 juin 2010 à 14:40
lolokun >

J'imaginais pas avoir mis autant de temps à répondre


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
espritclub Messages postés 6 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 16 juin 2010
15 juin 2010 à 15:54
Ok, alors j'aurais besoin à nouveau de votre aide parce que comme c'est dll appelée par l'appli web, je ne vois pas comment afficher un message box. J'ai bien essayer mais elle n'apparaît pas.
Ou alors il faut que ma dll me renvoie la valoir et que je l'affiche en javascript ? c'est ca ? Je suis pas vraiment calé en vb et ne me rend pas bien compte de ce qui faisable ou pas.


En tout cas je vais gratter dans ce sens et je vous tiens au courant. (Quand mon collègue aura libéré la plateforme de dev. Les cordonniers les plus mal chaussés....).

Merci.



Benjamin
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
15 juin 2010 à 16:08
Ah, je pensais que c'était du VB script moi vu le code, mais bon ca ne résoud pas le problème, en effet si t'as pas accès au serveur en bureau à distance tu ne verras pas le message s'afficher.

Essaye en locale, si c'est réelement un problème de chemin d'accès et de variables, l'environnement n'y est pour rien cela ne change donc pas grand chose.

Sinon je te conseille de vérifier le code qui précède celui que tu as posté, pour savoir si les variables ID et login sont bonne, au pire tu peux poster ca ici pour qu'on y jete un oeil

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
espritclub Messages postés 6 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 16 juin 2010
15 juin 2010 à 16:48
Ci-dessous le code de la fonction entière.
La ligne de création du chemin a été simplifiée pour les tests. Mais elle ne fonctionne pas non plus. Que je récupère l'adresse du serveur dans le .ini ou que je le mette en dur ne change rien.

Demain matin, j'aurais le poste de dev à dispo et j'essayerai de sortir le chemin d'accès via un msgbox.

'Fonction permettant de supprimer les répertoires
'dans tmpDir qui ont un lien avec l'instance passée en paramètre
Public Function DeleteRepertoryInstTmpDir(strInstID As String, strIDLogin As String) As String

Dim FSO
Dim strPathTmpDir 'Chemin du répertoire tmpDir


On Error GoTo Err

DeleteRepertoryInstTmpDir = "OK"
    
'strPathTmpDir = FStrLireIni("SERVER", "ServerInstFolder", App.Path & "\workflowdll.ini") & "TmpDir"

strPathTmpDir = CStr("\\serveurFile01\preprod$\Upload\FlowWork\Inst\TmpDir" & StrIdLogin & "_" & strInstID)
Set FSO = CreateObject("Scripting.FileSystemObject")       
FSO.DeleteFolder (strPathTmpDir)          
Set FSO = Nothing
        
Exit Function


Err:
    Set FSO = Nothing
    DeleteRepertoryInstTmpDir = ""

    ErrSource = Err.Source
    ErrNumber = Err.Number
    ErrDescription = Err.Description
    Set prvError = New ClsError
    Call prvError.FLogTrace("User", "DeleteRepertoryInstTmpDir", ErrSource & " - " & ErrNumber & " - " & ErrDescription & " - " & strPathTmpDir)
    Set prvError = Nothing

End Function


Benjamin
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
15 juin 2010 à 17:26
Le problème c'tes qu'on ne voit pas avec quel paramètres tu appelles cette fonction..

En dur tu as "TmpDir\\user1_549110610162440", True
Il y a double \, la variable "strid" le comprend bien??
sinon il faudrait le rajouter..



L'expérience, c'est une connerie par jour, mais jamais la même..
0
espritclub Messages postés 6 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 16 juin 2010
16 juin 2010 à 08:33
Bonjour,

Tout d'abord, le \\ dans le chemin en dure est une erreur de ma part. Comme je n'avais pas accès à la plateforme, j'étais obligé de recopier le code. Je n'ai pas donc pas de \ dans strId et c'est normal apriori.


Pour ce qui est de tester la valeur, j'ai effectué ce test dans le code de la dll et le résultat est tjs le même. Pas d'erreur , mais pas de suppression de fichier non plus.
Je pense que ce test élimine la piste d'une mauvaise construction du chemin d'accès au répertoire puisque si je copie le chemin qui est stockée dans la variable "repertoire", j'atteins bien le répertoire.

Public Function DeleteRepertoryInstTmpDirQuick(strInstID As String, StrIdLogin As String) As String
 
Dim FSO 'Objet permettant la manipulation des fichiers.
Dim repertoire As String

On Error GoTo Err
    
    DeleteRepertoryInstTmpDirQuick = "OK"
    repertoire = "\\serveurFile01\preprod$\Upload\FlowWork\Inst\TmpDir\tmainet_549110610162440"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    FSO.DeleteFolder repertoire, True
   
    Set FSO = Nothing
    
    Exit Function
    
Err:
    Set FSO = Nothing
    DeleteRepertoryInstTmpDirQuick = ""
    ErrSource = Err.Source
    ErrNumber = Err.Number
    ErrDescription = Err.Description
    Set prvError = New ClsError
    Call prvError.FLogTrace("User", "DeleteRepertoryInstTmpDirQuick", CStr(repertoire))
    Set prvError = Nothing

End Function





Benjamin
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
16 juin 2010 à 09:08
Non, en vérité, cela ne teste rien du tout !
Ton problème est forcément et surement je dirais même à 90% lié à une mauvaise valeur des variables et c'est la qu'il faut rechercher.


En VB comme dans n'importe quel langage :

Un variable est une variable, donc si tu fais :

Dim Param As String = "Bla bla bla"
Call Fonction(Param)

Ou

Call Function("Bla bla bla")

C'est du pareil au même, sinon c'est que la mémoire de ton ordinateur est gravement endommagé !!

Donc pour moi le code que tu nous présente n'est pas fautif, il es bon et effectue bien son travail (Du moins ce n'est pas un problème de droits dur le système de fichiers).

Ce qui ne va pas ?

Les valeurs de StrIdLogin & strInstID qui elles ne doivent pas contenir le bon id et/ou le bon login au moment de la suppression, le code fautif est je pense celui qui appele (précède) ta fonction DeleteRepertoryInstTmpDir

Question: tu développe bien en VB6 ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Rejoignez-nous