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

damedom41 79 Messages postés mercredi 14 avril 2010Date d'inscription 2 août 2014 Dernière intervention - 12 juin 2014 à 16:24 - Dernière réponse :  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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 22 octobre 2018 Dernière intervention - 14 juin 2014 à 17:14
1
Merci
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 NHenry 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de NHenry
jordane45 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 12 juin 2014 à 16:38
0
Merci
Je code en VBA sous ACCESS.
Je déplace donc ton sujet dans la section VBA du forum.
Commenter la réponse de jordane45
jordane45 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 16 juin 2014 à 08:10
0
Merci
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.
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.