Sauvegarde base de données à partir de la base de données activ

Résolu
damedom41
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Statut
Membre
Dernière intervention
2 août 2014
- 12 juin 2014 à 16:24
 damedom41 - 24 juin 2014 à 12:49
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

NHenry
Messages postés
14927
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
162
14 juin 2014 à 17:14
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.
1
Merci beaucoup, ça marche !
0
jordane45
Messages postés
35447
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 mai 2022
356
12 juin 2014 à 16:38
Je code en VBA sous ACCESS.
Je déplace donc ton sujet dans la section VBA du forum.
0
jordane45
Messages postés
35447
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 mai 2022
356
16 juin 2014 à 08:10
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.
0