Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: castor1 am November 26, 2015, 10:58:14

Titel: Backend Backup
Beitrag von: castor1 am November 26, 2015, 10:58:14
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!

Titel: Re: Backend Backup
Beitrag von: DF6GL am November 26, 2015, 16:59:26
Hallo,

mit "überschreiben" meinst Du sicherlich: alte löschen und neue erzeugen..   ;)
Titel: Re: Backend Backup
Beitrag von: MaggieMay am November 26, 2015, 20:25:55
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?
Titel: Re: Backend Backup
Beitrag von: PeterW am April 16, 2018, 18:24:18
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?
Titel: Re: Backend Backup
Beitrag von: markusxy am April 17, 2018, 09:13:58
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.