backup bij afsluiten.

Status
Niet open voor verdere reacties.

Sytse1

Gebruiker
Lid geworden
9 aug 2007
Berichten
584
Office versie
miDer
Bij het afsluiten van mijn met Access 365 gemaakte toepassing wil ik automatisch een back-up maken.
De back-up komt in een andere map te staan bv c:/Temp/Backup
Als de back-up datum dezelfde is wordt de back-up met de laatste overschreven.
Bij een andere datum wordt er een nieuwe back-up geplaatst.
De volgende VBA code geeft bij fout opsporing geen foutmelding maar wel bij de uitvoering.
Help. Waar zit de fout?

Code:
Function MaakBackup() As Boolean
Dim Source As String
Dim Target As String
Dim a As Integer
Dim objFSO As Object
Dim Path As String
Dim VarDD As Date
VarDD = Date
'huidige databse en map
Path = "C:\Temp"
Source = CurrentDb.Name
Target = Path & "\TEMP\Backup\" & "Opgeslagen door " & Environ("Username") & " op " & VarDD & " " & ".accdb"
'maak de backup
a = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(Path) Then

a = objFSO.CopyFile(Source, Target, True)
Else
objFSO.createfolder (Path)
a = objFSO.CopyFile(Source, Target, True)
End If

Set objFSO = Nothing
  
End Function
 
Hier wordt de tijd in de naam v/h bestand meegenomen, waar de kans op overschrijven er in principe niet is...
https://stackoverflow.com/questions/57742075/how-to-auto-backup-access-database

Let op: Er lijkt me iig minimaal 1 fout in een deel van de code te zitten:
Code:
Target = Target & Format(Now, "yyyymmdd-hhnn") & ".accdb"
neem aan dat voor "nn" het minuten moet zijn dus:
Code:
Target = Target & Format(Now, "yyyymmdd-hhmm") & ".accdb"
Verder heb ik de code niet gecheckt, ik ga er van uit dat je alleen dit nodig hebt om jouw probleem op te lossen.
 
Waarom mensen variabelen maken met namen die langer zijn dan de functie die ze vertegenwoordigen, is mij een raadsel. Tenzij je het commando 'Date' te weinig letters vindt om te typen, en je dus liever meer letters typt. Maar goed, je hebt die variabele (en nog een ander) ook helemaal niet nodig.
Code:
Function MaakBackup() As Boolean
Dim Source As String, Target As String, Path As String
    
    Path = "C:\Temp\Backup\"
    Source = CurrentDb.Name
    Target = Path & Environ("Username") & "\" & Format(Date, "yyyymmdd_") & (Split(CurrentDb.Name, "\")(UBound(Split(CurrentDb.Name, "\"))))
    With CreateObject("Scripting.FileSystemObject")
        If Not .FolderExists(Path & Environ("Username")) Then
        .CreateFolder Path & Environ("Username")
        End If
        .CopyFile Source, Target, True
    End With
End Function
 
Octafish en Route99 bedankt voor het meedenken voor de oplossing.
Octafish je code is weer mooi compact.
Natuurlijk was VarDD overbodig.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan