Automatischeen backup/kopie maken van de db bij afsluiten.

Status
Niet open voor verdere reacties.

jlebbink

Gebruiker
Lid geworden
15 feb 2010
Berichten
106
In het verleden ben ik geconfronteerd met een corrupte db. Dit wil ik niet weer meemaken.

Hoe kan ik bij afsluiten automatisch een kopie of backup van de hele database maken. Het afsluiten gaat momenteel vanuit een schakelbord met de macro "Afsluiten met bevestiging". Heb ook al geprobeerd de macro "DatabasebestandKopiëren" toe te voegen, maar dat lukt niet. Krijg de melding "De opdracht of actie DatabasebestandKopiëren is momenteel niet beschikbaar".
Hoe maak ik die actie beschikbaar of kan ik het met een VBA code uit gaan voeren?

Jan Lebbink
 
Dat werkt. Nu wil ik het eigenlijk nog zo hebben, dat er bij een tweede keer, een backup wordt gemaakt met bv de toevoeging 2 in de bestandsnaam. Bij de derde keer moet de eerste backup vervangen worden.
Dus:
1e keer Backup1.accdb
2e keer Backup2.accdb
3e keer weer Backup1.accdb
enz.

De code is nu als volgt:

Code:
Private Sub Afsluiten_Click()
On Error GoTo fout

Dim fileObj As Object
Dim strBestandNaam As String
Dim strBackupNaam As String
Dim msg As Integer
'Dim fout As String

strBestandNaam = "TLC.accdb"
strBackupNaam = Format$(Now(), "yyyymmdd") & strBestandNaam

strBestandNaam = CurrentProject.Path & "\" & strBestandNaam
strBackupNaam = CurrentProject.Path & "\" & strBackupNaam
Set fileObj = CreateObject("scripting.filesystemobject")
fileObj.copyfile strBestandNaam, strBackupNaam, True

msg = MsgBox("De backup is gelukt!")
DoCmd.RunMacro "DBAfsluiten"
Exit Sub
fout:
MsgBox "De backup is mislukt!", vbCritical

End Sub


Jan Lebbink
 
Laatst bewerkt door een moderator:
Je kunt een bestandsnaam controleren met het DIR commando. Kijk maar in de help van VBA voor de juiste syntax; hij is niet zo lastig. Als je een bestandsnaam hebt gevonden, kun je met een IF..THEN..ELSE wel verder bepalen wat je wilt doen.
En kun je code opmaken met de CODE tag (knop #)?
 
Helemaal gelukt.

Code:
Private Sub Afsluiten_Click()
On Error GoTo fout
Dim MijnBestand
Dim fileObj As Object
Dim strBestandNaam As String
Dim strBackupNaam As String
Dim strBackupNaam1 As String
Dim strBackupNaam2 As String
Dim MijnBestand1 As String
Dim MijnBestand2 As String
Dim msg As Integer
'Dim fout As String

strBestandNaam = "TLC.accdb"
strBackupNaam1 = "Copy1" & strBestandNaam
strBackupNaam2 = "Copy2" & strBestandNaam
MijnBestand1 = Dir(CurrentProject.Path & "\Copy1" & strBestandNaam)
MijnBestand2 = Dir(CurrentProject.Path & "\Copy2" & strBestandNaam)
        If MijnBestand1 = "" Then
            strBackupNaam = strBackupNaam1
            Laatste = strBackupNaam1
            ElseIf MijnBestand2 = "" Then
            strBackupNaam = strBackupNaam2
            Laatste = strBackupNaam2
        End If
            If Laatste = MijnBestand1 Then
                strBackupNaam = strBackupNaam2
                ElseIf Laatste = MijnBestand2 Then
                strBackupNaam = strBackupNaam1
                End If
                    If strBackupNaam = "" Then
                    strBackupNaam = strBackupNaam1
                    Else
                    End If
Laatste = strBackupNaam
strBestandNaam = CurrentProject.Path & "\" & strBestandNaam
strBackupNaam = CurrentProject.Path & "\" & strBackupNaam
Set fileObj = CreateObject("scripting.filesystemobject")
fileObj.copyfile strBestandNaam, strBackupNaam, True
msg = MsgBox("De backup van de database is gelukt!")
DoCmd.RunMacro "DBAfsluiten"

Exit Sub
fout:
MsgBox "De backup is mislukt!", vbCritical

End Sub
_________________
Jan Lebbink
 
Laatst bewerkt door een moderator:
@jlebbink Wanneer je een VBA-code of formule wil toevoegen, plaats deze dan tussen de code-tags (
Code:
 en
) oftewel selecteer je code en klik op het # icoontje. Bij voorbaat dank, zeker ook namens de helpers.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan