News

FAQ Access – Sicherung der Back End Datei

Category:

Access, FAQ

0

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.

Tags: ,

Leave a Reply

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.