Hallo,
nach langem Suchen habe ich folgenden Code für die Aktualisierung der verknüpften Tabellen in meiner DB gefunden:
For Each td In CurrentDb.TableDefs
If (td.Attributes And dbAttachedTable) = dbAttachedTable Then
td.Connect = ";DATABASE=" & PFAD & "Test.mdb"
td.RefreshLink
End If
Next td
Der Code funktioniert zwar gut wenn ich alle Tabellen aus der gleichen Quelle verknüpfen will. Ich habe jedoch Verknüpfungen aus unterscheidlichen Quellen.
Kann mir bitte jemand einen Tipp geben, wie ich den Code verändern muss, wenn ich einzelne Tabellen mit unterschiedlichen Quellen verknüfen will?
Vielen Dank im Voraus!
Rene
Du müsstest zuerst erfassen, welche Tabellen zu welchem Backend gehören. Dazu könnte man
- ein Extra-Tabelle mit diesen Informationen führen und auswerten
- unmittelbar die Systemtabelle MSysObjects auswerten
Hallo,
siehe:
http://dbwiki.net/wiki/VBA_Tipp:_Neuverkn%C3%BCpfen_des_Backends
ich habe lediglich eine Handvoll Tabellen, die zu drei unterschiedlichen Backends gehören. Da wäre doch das einfachste, wenn ich die Tabellen und Backends jeweils einzeln direkt in der Funktion benenne. Ich weiß nur leider nicht wie.
Ein Tipp, wie ich den Code ändern muss, um einzelne Dateien jweils einem Backend zuzuordnen wäre fantastisch!
Hallo,
hast Du die Tipps von Eberhard nicht gelesen?
Aus der Tabelle MSysObjects kann der Name der BE-Datei und der Name der entspr. Tabellen ausgelesen werden. Mit Hilfe einer (neuen) Tabelle, die den neuen BE-Dateinamen mit dem jeweils ausgelesenen verknüpft, können die Tabellen neu eingebunden werden (Durchlaufen der Tabelle mittels Recordset).
Hallo Franz,
gelesen habe ich die Tipps von Eberhard schon, allerdings bin ich nicht fit genug in der Erstellung von Funktionen, um das umsetzen zu können.
Ich konnte mein Problem dennoch lösen, weil ich letztlich den Teil, in dem die Verknüpfungen gemacht werden ( td.Connect = ";DATABASE=" & PFAD & "Test.mdb" ) weggelassen habe, denn die ändern sich eigentlich nicht.
Offenbar müssen diese aber aktualisiert werden ( td.RefreshLink) wenn ich die DB gelöscht und neu erstellt habe (nach Aktualisierungen/Anpassungen). Hier reicht der Befehl RefreshLink aber offenbar aus.