sarekhl
Goto Top

relative Adressierung bei verknüpften Tabellen in Access

Hallo zusammen,

Access bietet ja die Möglichkeit, die Tabellen einer Datenbank in einer separaten MDB-Datei zu haben und in der MDB-Datei, wo Formulare, Abfragen etc. liegen zu verknüpfen. Dies möchte ich jetzt gerne für eine Datenbank nutzen, die ich gerade für ein Kloster erstelle, damit ich leichter Änderungen an den Berichten und Formularen durchführen kann, die dort dann einfach eingespielt werden können. Der Datenbestand würde dann ja dabei nicht berührt werden.

Nun habe ich das Problem, daß diese Verknüpfung offenbar immer einen absoluten Pfad hat. Ich habe aber auf meinem Rechner eine andere Verzeichnisstruktur als der Rechner in dem Kloster, auf dem die Datenbank laufen soll.

Beide MDB-Dateien befinden sich im gleichen Verzeichnis, nur ist das bei mir eben e:\Entwicklung\access\klosterkartei und dort d:\daten\database\kartei. Gibt es eine Möglichkeit, die Tabellen mit einem relativen Pfad bzw. ohne Pfadangabe zu verknüpfen, daß er also die MDB-Datei mit den Tabellen im gleichen Verzeichnis sucht, in der sich die MDB-Datei mit den Abfragen etc. befindet, in der die Tabellen verknüpft sind. So daß es halt immer funktioniert, egal in welchem Verzeichnis die beiden Dateien sich befinden ...


Danke im Voraus,
André

Content-Key: 66230

Url: https://administrator.de/contentid/66230

Printed on: April 19, 2024 at 20:04 o'clock

Member: AndreasHoster
AndreasHoster Aug 15, 2007 at 06:30:12 (UTC)
Goto Top
Nein, das ist nicht möglich, zumindestens habe ich bei Access 2003 keine Möglichkeit gefunden.
Ich habe mir damit abgeholfen, ein VBA Skript zu schreiben, welches mir die Links anpasst.
Ich habe drei Datenbanken die verknüpfte Daten haben und alle liegen immer im selben Verzeichnis, allerdings heißt das nicht immer gleich.
Dieses Skript passt alle Verknüpfungen, die es in den drei Datenbanken finden kann und passt dann den Pfad an:

Function TabellenVerknuepfungAnpassen()
Rem Wir gehen davon aus, daß die anderen DBs immer im gleichen Verzeichnis liegen, wie die Ansichts-Datenbank

Dim oArrAccess(3) As Application
Rem Dim app As Application
Dim sPath As String
Rem Dim tbldef As TableDef
Dim sTemp As String

sPath = Application.CurrentProject.Path
Rem Erstmal alle DBs öffnen
Set oArrAccess(0) = Application
Set oArrAccess(1) = CreateObject("Access.Application.11")
oArrAccess(1).OpenCurrentDatabase sPath + "\austausch.mdb"
oArrAccess(1).SetOption "Auto Compact", True
oArrAccess(1).Visible = False
Set oArrAccess(2) = CreateObject("Access.Application.11")
oArrAccess(2).OpenCurrentDatabase sPath + "\lokal.mdb"
oArrAccess(2).SetOption "Auto Compact", True
oArrAccess(2).Visible = False
Rem Datenbanken durchgehen
For Each app In oArrAccess
Rem Tabellen in Datenbanken durchgehen
If Not (app Is Nothing) Then
For Each tbldef In app.CurrentDb.TableDefs
Rem Prüfen, ob verknüpfte Tabelle
If tbldef.Connect <> "" Then
Rem Verknüpfte Tabelle, Neuen Link zusammenbasteln und in das Tabellenobjekt schreiben
sTemp = tbldef.Connect
sTemp = Right(sTemp, Len(sTemp) - InStrRev(sTemp, "\"))
tbldef.Connect = ";Database=" & sPath & "\" & sTemp
Rem Neuen Link aktivieren
Call tbldef.RefreshLink
End If
Next
End If
Next
Rem Datenbanken schließen
For Each app In oArrAccess
app.CloseCurrentDatabase
app.Quit
Next
MsgBox "Umstellung fertig"
End Function

Eventuell hilft Dir das Skript ja, ein eigenes für die Anpassung zu schreiben.