Liebe Leute,
ich würde gerne das Backend deiner Access-DB sichern. Dazu verwende ich momentan folgenden Code:
On Error GoTo errproc
Dim strQuelldatei As String, strZieldatei As String, oFSO As Variant
Dim strZielverz As String, strBeName As String, strSavName As String
Dim strStartverz As String
Dim db As DAO.Database, rs As DAO.Recordset
strZielverz = "C:\Datenbank\"
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT DISTINCT database" _
& " FROM msysObjects" _
& " WHERE Type = 6", dbOpenSnapshot)
Set oFSO = CreateObject("Scripting.FileSystemObject")
Do While Not rs.EOF
strBeName = Left(Dir(rs!Database), Len(Dir(rs!Database)) - 4)
strSavName = strBeName & "_" & Format$(Now, "yyyy\-mm\-dd") _
& ".mdb"
strQuelldatei = rs!Database
strZieldatei = strZielverz & strSavName
If strZieldatei = "" Then GoTo endproc
If Dir(strZieldatei) <> strSavName Then
oFSO.CopyFile strQuelldatei, strZieldatei, True
SetAttr strZieldatei, vbReadOnly
MsgBox "Sicherheitskopie erfolgreich erstellt unter:" & vbCrLf _
& vbCrLf & strZieldatei, vbInformation, "Backup erfolgreich!"
Else
MsgBox "Sicherheitskopie bereits vorhanden:" & vbCrLf & vbCrLf _
& strZieldatei, vbInformation, "Backup nicht erfolgreich!"
End If
rs.MoveNext
Loop
endproc:
On Error Resume Next
rs.Close
Set rs = Nothing
Set db = Nothing
Set oFSO = Nothing
Exit Sub
errproc:
MsgBox Err.Description, , Err.Number
Resume endproc
Der Code funktioniert soweit. Allerdings wird hier - je nach Datumsformat - immer eine neue Datei gespeichert. Ich hätte aber gerne, dass die alte Datei jedes Mal überschrieben wird, sodass es immer nur eine Backup-Datei gibt. Kann man den Code diesbezüglich ändern?
Danke für eure Hilfe!
Hallo,
mit "überschreiben" meinst Du sicherlich: alte löschen und neue erzeugen.. ;)
Hallo,
Zitat von: castor1 am November 26, 2015, 10:58:14Allerdings wird hier - je nach Datumsformat - immer eine neue Datei gespeichert.
was meinst du hier mit "Datumsformat"? Es wird doch immer auf dieselbe Art formatiert.
ZitatIch hätte aber gerne, dass die alte Datei jedes Mal überschrieben wird, sodass es immer nur eine Backup-Datei gibt.
Meinst du vielleicht eine Backup-Datei pro Tag?
Ich habe eine ergänzende Frage:
oFSO.CopyFile C:\Verzeichnis\*.*, C:\Backup\, True
mit dieser Zeile kopiere ich alle Dateien aus dem quellverzeichnis in das Zielverzeichnis. Bereits vorhandene Dateien werden dabei überschrieben. Kann man nun irgendwie festlegen, dass nur ältere Dateien überschrieben werden?
Zitat von: PeterW am April 16, 2018, 18:24:18
Kann man nun irgendwie festlegen, dass nur ältere Dateien überschrieben werden?
Du musst es halt programmieren.
Du könntest für jede Datei überprüfen, ob Sie im ZielOrdner existiert.
Wenn ja, prüfst du auf Abweichungen der DateLastModified Eigenschaft der Dateien.
Wenn die abweichen kann man davon ausgehen, dass sich etwas verändert hat.