2017-10-20 29 views
0

Je recycle du code à partir d'une ancienne base de données.Comment puis-je gérer les erreurs lors de la copie de fichiers sur le réseau?

Pour une personne, située à l'autre bout du pays, je crois qu'il pourrait y avoir un problème de connexion.

Public Function BackUpBackend() 

    Dim Source As String 
    Dim Target As String 
    Dim retval As Integer 

    Source = "\\network\backend\accessfile.accdb" 

    Target = "\\network\backend\backup\" 
    Target = Target & Format(Date, "mm-dd") & "@" 
    Target = Target & Format(Time, "hh-mm") & ".accdb" 

    retval = 0 
    Dim objFSO As Object 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    retval = objFSO.CopyFile(Source, Target, True) 
    Set objFSO = Nothing 

End Function 

Y at-il un moyen de détecter les erreurs de connexion dans ce code? Et si c'est le cas, la connexion peut-elle être rétablie ou simplement arrêter le processus de sauvegarde tous ensemble lorsque le problème survient?

+0

si le poste de travail à distance a un lecteur partagé puis copier un grand f ile au lecteur partagé, puis le relire. Vérifiez la vitesse du transfert de fichier et vérifiez s'il y a de la corruption après l'aller-retour ... puis exécutez le code sur votre station de travail avec accessfile.accdb sur le poste de travail distant ... quelque chose peut apparaître – jsotola

Répondre

2

Dans VBA, vous pouvez faire

On Error Resume Next 

qui continueront erreurs passées. Cela peut être dangereux, donc il est souvent préférable de passer en cas d'erreur de manipuler à nouveau le plus rapidement possible avec

On Error Goto 0 

Vous pouvez définir des gestionnaires personnalisés pour les erreurs qui surgissent que vous voulez prendre des mesures spécifiques sur: De la VBA Reference:

Sub InitializeMatrix(Var1, Var2, Var3, Var4) 
    On Error GoTo ErrorHandler 
    . . . 
    Exit Sub 
ErrorHandler: 
    . . . 
    Resume Next 
End Sub 

alors vous pourriez faire quelque chose comme: (je ne l'ai pas testé)

Public Function BackUpBackend() 

    Dim Source As String 
    Dim Target As String 
    Dim retval As Integer 


    Source = "\\network\backend\accessfile.accdb" 

    Target = "\\network\backend\backup\" 
    Target = Target & Format(Date, "mm-dd") & "@" 
    Target = Target & Format(Time, "hh-mm") & ".accdb" 

    retval = 0 
    Dim objFSO As Object 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 

    On Error Goto ErrorHandler 
    retval = objFSO.CopyFile(Source, Target, True) 
    Set objFSO = Nothing 
    On Error Goto 0 

    Exit Function 

ErrorHandler: 
    MsgBox("Backup failed. If this happens often contact IT", vbExclamation) 

End Function 
+0

C'est génial, je vérifiera que cela fonctionne le lundi quand elle reviendra car je n'ai aucun moyen de le reproduire en ce moment. Apprécier ton aide! J'essaie toujours de saisir le "Error Handling" en ce moment – Maldred

+0

De rien. Faites une lecture générale de l'erreur et de la gestion des exceptions, ce qui peut aider. Aussi, vous pouvez délibérément le faire échouer en mettant dans un mauvais chemin cible pour vérifier votre code – Spangen

+0

Je suppose que je pourrais le faire, mais ce serait différent d'une perte de connexion ne serait-il pas? – Maldred