IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Erreur 70 à la copie de pst - VB


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut Erreur 70 à la copie de pst - VB
    Bonjour à tous

    J'essaie en vain de mettre en place une copie des pst de nos collaborateurs sur un dossier du serveur de domaine. (où se situe le VB)

    Je lance mon VB en tant qu'admin du domaine avec tous les droits qui vont bien sur les partages des postes clients, d'où je veux copier le pst...

    J'ai la même erreur avec un CopyFile ou FileCopy du fichier pst.
    Le On Error le marche pas , et l'erreur 70 semblerait venir du fait qu'Outlook est ouvert sur le poste client,
    et qu'il verrouille l'accès à ce fichier.

    l'idée de départ étant de passer à la machine suivante, dans la liste, si l'erreur se produisait... mais ça veut pas... aie:

    Une idée quelqu'un ?

    Merci d'avance

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour, tu l'utilise comment le On error ..?

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Plus généralement :
    Ma boule de cristal est cassé, il est où ton code avec la partie sur l'utilisation du On Error ?

    Je rappelle que le forum ne fait pas dans l'art divinatoir

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut


    En fait,
    je fais un On Error GoTo suite avant la copy du fichier
    et dans suite : y'a juste une insertion d'un état dans la base de log,
    puis la suite de ma boucle...

    Visiblement, l'erreur est traitée une fois mais à la deuxième ça pête.

    Après c'est peut-être une fausse piste...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut ZE CODE
    Oki Oki

    Voici un extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    On Error GoTo suite
     FileCopy "\\" & oNom & Rep_partage & oName, oRep & oNom & "\" & oName                                                              
    '...
    suite:
    Etat_sauvegarde = 5
     
    FinBoucle:
    Next oFl
    '...
    Rien de spécial à vous montrer quoi...

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Du go to et des boucles le tout imbriqué -> boooooooooouuuuuuuuuuuuuuuuuhhhhhhhhhhhhh

    Enfin ce n'est que mon avis personnel.

    Connais tu l'objet err ? c'est l'objet erreur de VBS qui est auto remplie par l'interpréteur en cas d'erreur.

    Avec un On Error Resume Next, et une gestion des erreurs grâce à err tu devrais t'en sortir plus simplement.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut Objet : objet err...
    Pour l'objet Err,
    J'ai même essayer de placer un Err.Clear, en fin de traitement... mais rien y fait.
    Après test, l'erreur est bien gérée la première fois, mais la deuxième ça pète avec erreur : Permission refusée...

    Je pense plus à un bug, non traité pour l'instant ?

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    essaye avec err.number = 0 plutot que clear

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Il manque un morceau dans ton code mais bon..

    crée une fonction (ou procédure) séparée pour ta copie avec sa propre gestion d'erreur..

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut Bout de code et err.number = 0
    Merci pour vos réponses ! Ca fait plizir !

    J'ai essayé avec err.number =0, mais rien n'y fait...

    Par contre, je vais peut-être creuser la piste de la fonction séparée.

    Je vous tiens au jus...

    @ +

    Pour info : (et pour toi bbil )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
    'Récupération des noms dans la table annuaire
    Set oRst = New ADODB.Recordset
    oRst.Open "select distinct a.nom_pc as nom_pc from annuaire a left join logs l on a.nom_pc=l.nom_pc and l.etat=0 order by l.id_sequence, a.nom_pc", oCnx
     
    oRst.MoveFirst
     
    compteurSucces = 0
     
    While Not (oRst.EOF) And compteurSucces < limitSauvegarde
     
        oNom = oRst("nom_pc")
     
        'Interrogation de la machine
        If Ping(oNom, sIP) Then
     
           'Instanciation de l'objet
           Set oFSO = New Scripting.FileSystemObject
     
            If oFSO.FolderExists("\\" & oNom & Rep_partage) Then
     
                            'Montage du dossier partagé
                            Set oFld = oFSO.GetFolder("\\" & oNom & Rep_partage)
     
                            '---Comparaison avec la table détails_backup---
     
                            'Définition des états par défaut(Pas de sauvegarde nécessaire + Reset Compteur fichier)
                            Etat_sauvegarde = 4
                            compteurFichier = 0
     
                            For Each oFl In oFld.Files
     
     
                                    compteurFichier = compteurFichier + 1
     
                                    'Définition du Répertoire de sauvegarde des pst, sur le serveur
                                    oRep = Rep_sauvegarde
                                    oName = oFl.Name
                                    oSize = oFl.Size
                                    oDate = oFl.DateLastModified
                                    oAcces = oFl.DateLastAccessed
                                    oAttrib = oFl.Attributes
                                    'MsgBox "size : " & oSize & " oDate : " & oDate
     
                                    'Récupération des noms dans la table details_backup
                                    Set oRst2 = New ADODB.Recordset
                                    oRst2.Open "SELECT fichier, taille, date_maj FROM details_backup WHERE nom_pc ='" & oNom & "' AND fichier ='" & oName & "' AND taille='" & oSize & "' AND date_maj='" & oDate & "'", oCnx
     
                                            If oRst2.EOF Then
     
                                                    If Not oFSO.FolderExists(oRep & oNom) Then
                                                    oFSO.CreateFolder (oRep & oNom)
                                                    End If
     
                                                    'Test pour exclure les fichiers avec un "~" ou ".tmp"
     
                                                    If InStr(oName, Chr(126)) = 0 Or InStr(oName, ".tmp") = 0 Then
     
                                                                    'Test d'existence du fichier dans le répertoire de sauvegarde
                                                                    If oFSO.FileExists(oRep & oNom & "\" & oName) Then
                                                                    oFSO.DeleteFile oRep & oNom & "\" & oName, True
                                                                    End If
     
                                                                    On Error GoTo errcopy
     
                                                                    FileCopy "\\" & oNom & Rep_partage & oName, oRep & oNom & "\" & oName
     
                                                                    'Insertion dans la base (détails du fichier sauvegardé)
                                                                    strSQL = "INSERT INTO details_backup SET nom_pc='" & oNom & "', id_sequence='" & Seq_actual & "',fichier='" & oName & "', taille='" & oSize & "', date_backup=Now(), date_maj='" & oDate & "'"
                                                                    oCnx.Execute strSQL
     
                                                                    'Incrementation du compteur succès
                                                                    compteurSucces = compteurSucces + 1
     
                                                                    'Changement d'etat(Sauvegarde à jour)
                                                                    If Etat_sauvegarde <> 5 Then
                                                                       Etat_sauvegarde = 0
                                                                    End If
                                                    End If
                                            End If
     
     
     
                                    GoTo FinBoucle
     
    errcopy:
                                    MsgBox "Erreur de Copie"
                                    Etat_sauvegarde = 5
     
    FinBoucle:
                        MsgBox "Fin Boucle"
                        Next oFl
     
                        If compteurFichier = 0 Then
                        'Changement d'etat (pas de fichier dans le répertoire partagé)
                        Etat_sauvegarde = 3
                        End If
     
                Else
                'Changement d'etat (répertoire non partagé ou inexistant)
                Etat_sauvegarde = 2
                End If
     
        Else
        'Changement d'etat (pas de réponse du pc)
        Etat_sauvegarde = 1
        End If
     
        'Insertion dans la base logs
        strSQL = "INSERT INTO logs SET nom_pc='" & oNom & "', id_sequence='" & Seq_actual & "', etat='" & Etat_sauvegarde & "'"
        oCnx.Execute strSQL
     
    oRst.MoveNext

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Franchement je n'utiliserais pas le go to.
    Je testerais si err.number est différent de 0 et si c'est le cas, je fais ces trois ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MsgBox "Erreur de Copie"
    Etat_sauvegarde = 5
    exit for
    Et dans le cas contraire on ne fait rien (et donc continue la boucle)

Discussions similaires

  1. Erreur lors de copie de bases de données
    Par sanouk dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/03/2010, 09h08
  2. Script pour copie de PST sur un serveur
    Par Grego057 dans le forum VBScript
    Réponses: 0
    Dernier message: 22/05/2008, 15h35
  3. Message d'erreur lors de copie de table
    Par LeBihan dans le forum Modélisation
    Réponses: 5
    Dernier message: 03/03/2008, 19h55
  4. erreur lors de copie de données
    Par vins111282 dans le forum Access
    Réponses: 2
    Dernier message: 15/01/2007, 13h25
  5. Réponses: 1
    Dernier message: 29/12/2006, 20h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo