Sauvegarde base de données à partir de la base de données activ [Résolu]

Signaler
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Statut
Membre
Dernière intervention
2 août 2014
-
 damedom41 -
Je code en VBA sous ACCESS.
Je cherche à sauvegarder la base à partir de la base ouverte active.
Lorsque j'utilise ce type de code
Public Sub copie_base()
Dim dbficori, dbficdes
dbficori = dbparpth & "BOULPAT_V0.accdb"
dbficdes = dbparpts & "BOULPAT_" & strdat(Date) & "_" & strtime(Time) & ".accdb"
FileCopy dbficori, dbficdes
On Error GoTo copie_base_err
MsgBox ("copie " & dbficdes & " effectuée ")
copie_base_err:
Exit Sub
End Sub

J'ai une erreur 70 "permission denied", semble-t-il parce que ma base est ouverte, puisque lorsque je lance la procédure d'une autre base vers une sauvegarde cela foncitonne.
J'ai donc été sur le net et ai trouvé ceci :
Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" _
      (ByVal lpExistingFileName As String, _
      ByVal lpNewFileName As String, _
      ByVal bFailIfExists As Long) As Long

      Sub CopyFile(SourceFile As String, DestFile As String)
      MsgBox ("sourcefile " & SourceFile)
      MsgBox ("destfile " & DestFile)
      '---------------------------------------------------------------
      ' PURPOSE: Copy a file on disk from one location to another.
      ' ACCEPTS: The name of the source file and destination file.
      ' RETURNS: Nothing
      '---------------------------------------------------------------
        Dim result As Long
         If Dir(SourceFile) = "" Then
            MsgBox Chr(34) & SourceFile & Chr(34) & _
               " is not valid file name."
         Else
            result = apiCopyFile(SourceFile, DestFile, False)
         End If
      End Sub

Cette solution fonctionne lorsque je passe les paramètres "en dur" :
Public Sub test_copyfile()
Dim dbficori, dbficdes As String
Dim result As Long
'dbficori = "C:\BOULPAT\BOULPAT_V0.accdb"
'dbficdes = "C:\BOULPAT\BOULPAT_VO\BOULPAT_BAK.accdb"
CopyFile "c:\boulpat\boulpat_v0.accdb", "c:\boulpat\boulpat_sauv\toto.accdb"
'Call CopyFile(dbficori, dbficdes)
MsgBox result
End Sub

mais me jette à la compil avec une erreur byref dès que j'utilise dbficori, dbficdes et call copyfile(dbficori, dbficdes)
Pourriez vous m'aider s'il vous plaît

3 réponses

Messages postés
14689
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
8 août 2020
144
Sub CopyFile(SourceFile As String, DestFile As String)
Par défaut les paramètres osnt passés en ByRef sur VB6/A, précises donc ByVal pour voir.
Merci beaucoup, ça marche !
Messages postés
29170
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 août 2020
335
Je code en VBA sous ACCESS.
Je déplace donc ton sujet dans la section VBA du forum.
Messages postés
29170
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 août 2020
335
Bonjour.
Quand tu l'ecris en dur...tu les mets en minuscule. ..alors que quand tu declares les variables tu les écris en majuscule ?!

A mon avis. ..ça vient de la.