Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Backend Backup

Begonnen von castor1, November 26, 2015, 10:58:14

⏪ vorheriges - nächstes ⏩

castor1

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!


DF6GL

Hallo,

mit "überschreiben" meinst Du sicherlich: alte löschen und neue erzeugen..   ;)

MaggieMay

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?
Freundliche Grüße
MaggieMay

PeterW

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?
Viele Grüße aus Berlin
Peter

markusxy

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.