FAQ Access – Sicherung der Back End Datei
Access Tabellen – Sicherung der BackEnd Datei
Problem
Bei der Arbeit mit Back-End/Front-End-Lösungen stellt sich immer wieder das Problem, dass das Back-End gesichert oder als Kopie abgelegt werden soll. Im Folgenden stellen wir Ihnen eine Prozedur vor, die diese Aufgabe bequem und automatisch aus einem Front-End heraus erledigt.
Lösung
Legen Sie sich zunächst im Front-End ein Modul „modBackupBackend“ an und geben Sie dort die folgenden Prozeduren ein:
Public Sub BackupBackend() Dim strMsg As String, strX As String Dim strQuellMDB As String, strZielMDB As String Dim td As TableDef DoCmd.Hourglass True For Each td In CurrentDb.TableDefs If td.Connect <> "" Then strX = LCase$(td.Connect) If InStr(strX, "database=") <> 0 Then strX = Mid$(strX, InStr(strX, "database=") + 9) If InStr(strX, ";") <> 0 Then strX = Left$(strX, InStr(strX, ";") - 1) End If strQuellMDB = strX Exit For End If End If Next strZielMDB = PathOnly(strQuellMDB) + _ "Backup_Backend.MDB" On Error Resume Next Kill strZielMDB Err = 0 FileCopy strQuellMDB, strZielMDB Beep DoCmd.Hourglass False If Err <> 0 Then MsgBox "Fehler beim Kopieren: " + CStr(Err) + ", " + _ Err.Description, _ vbOKOnly + vbCritical, "!!! Problem !!!" Else MsgBox "Back-End wurde erfolgreich kopiert...", _ vbOKOnly + vbInformation, "Fertig" End If End Sub
Function PathOnly(strPath As String) As String Dim L As Integer PathOnly = "" If InStr(strPath, "\") = 0 Then Exit Function L = Len(strPath) While Mid$(strPath, L, 1) <> "\" And L > 0 L = L - 1 W end If L > 1 Then PathOnly = Left$(strPath, L) End Function
Wenn Sie nun das Back-End sichern möchten, können Sie beispielsweise über Strg+G den Direktbereich öffnen und die Prozedur „BackupBackend“ manuell aufrufen. Möchten Sie regelmäßig Sicherungen anlegen, empfiehlt sich der Aufruf über eine Schaltfläche in einem Formular:
1. Legen Sie eine Schaltfläche „btnBackupBackend“ im gewünschten Formular an.
2. Stellen Sie die Eigenschaft „Beim Klicken“ der Schaltfläche auf „[Ereignisprozedur]“ ein und klicken Sie auf die Schaltfläche mit den drei kleinen Punkten.
3. Geben Sie im VBA-Editor die folgende Anweisung ein:
Sub btnBackupBackend_Click()
BackupBackend
End Sub
Bitte beachten Sie beim Einsatz der Prozedur, dass niemand auf das Back-End zugreifen darf, wenn es gesichert werden soll. Auch das Formular, in dem die Schaltfläche untergebracht wird, darf nicht auf Tabellen des Back-Ends zugreifen. Andernfalls wird der Zugriff zum Kopieren verweigert.
Die Funktionsweise der Prozedur ist schnell erklärt: In einer Schleife prüfen wir zunächst alle Tabellendefinitionen, ob deren Eigenschaft „Connect“ einen Inhalt hat und wenn ja, ob sie die Zeichen „database=“ beinhaltet. Ist das der Fall, handelt es sich um eine aus einem Back-End verknüpfte Tabelle. Pfad und Dateiname des Back-Ends lassen sich dann ab der Position hinter dem Gleichheitszeichen nach „database=“ auslesen. Das Ergebnis ist beispielsweise
„Z:\Daten\Access\Addressen.mdb“.
Über die Hilfsfunktion „PathOnly()“ ermitteln wir daraus den Pfad, also beispielsweise
„Z:\Daten\Access\“ und fügen dort den Dateinamen
„Backup_Backend.MDB“
als Namen für die Kopie hinzu. Die Anweisung „Kill“ löscht anschließend eine eventuell bereits vorhandene Kopie, bevor „FileCopy“ schließlich das Back-End in die Datei „Backup_Backend.MDB“ kopiert.