Warum das überhaupt ein Thema ist
Access merkt sich den Pfad zur Backend-Datei.
Wenn Du die verschiebst oder der Laufwerksbuchstabe sich ändert,
finden Deine Tabellen nichts mehr.
Dann geht das Geklicke los.
Ich mach das anders. Ich prüfe beim Start, ob die Verknüpfungen noch gültig sind.
Wenn nicht, repariere ich sie automatisch.
Der Standardfall: Backend auf Netzlaufwerk
Du hast die Tabellen per Assistent verknüpft.
Access speichert dann etwas wie:
;DATABASE=Z:\Daten\backend.accdb
Das ist instabil. Ich arbeite lieber mit UNC-Pfaden:
;DATABASE=\\Server01\AccessDB\backend.accdb
Beim Start: Verknüpfung prüfen und aktualisieren
Ich prüfe beim Öffnen, ob die erste verknüpfte Tabelle erreichbar ist.
Wenn nicht, starte ich ein automatisches Re-Linking.
Schrittweise erklärt
- Backend-Dateipfad zentral definieren
- Prüfen, ob der Pfad existiert
- Bestehende Tabellenverknüpfung löschen
- Neu verknüpfen mit aktuellem Pfad
Beispielcode: Automatisches Refresh beim Start
Sub CheckUndRefreshTabellen()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim strBackendPfad As String
Dim strConnect As String
strBackendPfad = "\\Server01\AccessDB\backend.accdb"
strConnect = ";DATABASE=" & strBackendPfad
Set db = CurrentDb
On Error GoTo Fehler
' Test: Gibt es die Datei?
If Dir(strBackendPfad) = "" Then
MsgBox "Backend nicht gefunden: " & strBackendPfad, vbCritical
Exit Sub
End If
' Tabelle prüfen
For Each tdf In db.TableDefs
If Len(tdf.Connect) > 0 And InStr(tdf.Connect, "DATABASE=") > 0 Then
tdf.Connect = strConnect
tdf.RefreshLink
End If
Next
MsgBox "Tabellenverknüpfungen aktualisiert.", vbInformation
Exit Sub
Fehler:
MsgBox "Fehler beim Aktualisieren: " & Err.Description, vbExclamation
End Sub
Tipp: Beim Öffnen der Anwendung automatisch starten
Im Startformular oder AutoExec-Makro aufrufen:
=CheckUndRefreshTabellen()
UNC statt Laufwerk: Bessere Stabilität
Gemappte Laufwerke wie Z:\
sind benutzerabhängig.
UNC ist für alle gleich – und robuster.
Ich verlinke alle Tabellen über UNC. Immer.
Unterschiedliche Backend-Pfade pro Standort?
Wenn Du mehrere Standorte hast, kannst Du den Pfad per Konfig-Tabelle speichern.
Oder per INI-Datei. Oder aus der Registry lesen.
Hauptsache: Nicht fest im Code verdrahten.
Beispiel: Pfad aus Tabelle lesen
Function HoleBackendPfad() As String
HoleBackendPfad = DLookup("Pfad", "tblBackendPfad", "ID=1")
End Function
Dann:
strBackendPfad = HoleBackendPfad()
Tabellenverknüpfung komplett neu erstellen
Wenn Du auf Nummer sicher gehen willst, kannst Du alle Tabellen löschen und neu einbinden.
Beispiel: Komplettes Re-Linking
Sub NeuVerknuepfen()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim strBackend As String
Dim tabelle As Variant
strBackend = "\\Server01\AccessDB\backend.accdb"
Set db = CurrentDb
' Alte Verknüpfungen löschen
For Each tdf In db.TableDefs
If Len(tdf.Connect) > 0 And InStr(tdf.Connect, "DATABASE=") > 0 Then
db.TableDefs.Delete tdf.Name
End If
Next
' Neu verknüpfen
For Each tabelle In Array("Kunden", "Aufträge", "Produkte")
Set tdf = db.CreateTableDef(tabelle)
tdf.SourceTableName = tabelle
tdf.Connect = ";DATABASE=" & strBackend
db.TableDefs.Append tdf
Next
MsgBox "Tabellen neu verknüpft."
End Sub
Mein Tipp zum Schluss
Wer verknüpfte Tabellen automatisch pflegt, muss nicht im Montagmorgen-Chaos debuggen.
Access kann das. Du musst es ihm nur beibringen.
No responses yet