Pfad der Tabellenverknüpfung

Hallo Freunde,

ich habe eine Access-Datei (master) welche mit den Tabellen einer 2’ Access-Datei (client) arbeiteten soll
es ist ja alles Kinderleicht mit dem „Tabellenverknüpfung Manager“ alles zu arrangieren, ABER hierzu habe ich nun eine Frage.
Ich will die Tabellen OHNE Pfadangaben in der Master-Datei intregieren.

Denn nur so kann ich doch die datenbank unabhängig von Speicherot verwenden (hauptsache sie sind im gleichem Ordner)

Gruß aus Berlin, und danke im Vorraus
Jens

Hallo, Jens!

Ich will die Tabellen OHNE Pfadangaben in der Master-Datei
intregieren.

Nix gips. Access speichert die Pfadangaben netterweise mit. Das gleiche Problem hatte ich auch schon öfter bzw. ständig. Als Abhilfe brauchst Du eine Routine, welche alle eingebundenen Tabellen auf den passenden Pfad anpasst (For Each … In CurrentDb.TableDefs, .Connect setzen, .RefreshLink aufrufen). Diese kannst Du wegen der Performance auch nur dann aufrufen, wenn das Auslesen aus einer beliebigen verknüpften Tabelle den Fehler x (weiß grad nicht, welcher das ist; probier’s aus) bringt. Das ganze wird beim Starten Deines Programms aufgerufen…

Falls Du detailliertere Infos brauchst, frage noch mal…

Gruß, Manfred

Hallo,

dieses Problem ist allgegenwaertig!!!
Ich habe mehrere ACCESS-Anwedungen laufen, die beim Starten alle Verknuepfungen loeschen und neu anlegen. Der Pfad zu der BackEnd-MDB ist in der Registry abgestellt, bzw. die Routine geht davon aus, das ales im gleichen Verzeichnis ist. Das funktioniert recht gut und dauert bei ca. 30 Tabellen auf einem 300MHz-Rechner ca. 10 Sekunden.

Vorgehensweise:

  1. schleife die alle Verknuefungen loescht.
  2. Pfad von CurrentDB feststellen.
  3. Backend-MDB in neuem Workspace oeffnen.
  4. Frontend-MDB in neuem Workspace oeffnen.
  5. Die Tabellen der Backend-MDB durchlaufen und die Verkuepfungen in Frontend neu anlegen.
  6. In CurrentDB Refresh auf die Verknuepfungen

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, allerseits!

Zum Finetuning:

  1. schleife die alle Verknuefungen loescht.

Hängt vom Ansatz ab. Wenn alle Tabellen aus Quelldatenbank zu verwenden sind, i. O. Ansonsten Tabellen beibehalten und .Connect neu setzen oder Namenskonvention definieren von aus-/einzuschließenden Tabellen.

Obacht auch bei Tabellen, die aus mehreren Quelldatenbanken kommen.

  1. Pfad von CurrentDB feststellen.

Oder alternativ aus einer internen Tabelle/Ini-Datei einen definierten Pfad/Datei auslesen (z. B. Netzwerk) oder per Datei-Auswahl-Dialog, falls Pfad/Datei nicht existiert, einstellen lassen und für den nächsten Start speichern.

  1. Backend-MDB in neuem Workspace oeffnen.

Muss gar nicht mal in neuem Workspace sein. Normales .OpenDatabase langt.

  1. Frontend-MDB in neuem Workspace oeffnen.

Muss ebenfalls nicht sein. Frontend muss gar nicht geöffnet werden; ist doch schon offen. DoCmd.TransferDatabase mit Link langt.

  1. Die Tabellen der Backend-MDB durchlaufen und die
    Verkuepfungen in Frontend neu anlegen.

MSys* dabei auslassen. Optional weitere Tabellen auslassen (siehe 1.)

  1. In CurrentDB Refresh auf die Verknuepfungen

I. d. R. eigentlich auch nicht nötig.

Die Laufzeit hängt dabei weniger von der Tabellenanzahl als vielmehr auf dem Zugriff auf die Daten-Datenbank ab. Das wird, wenn sich die Datei auf einem (am Ende noch langsamen) Netzwerkverzeichnis liegt und mehrere User drauf zugreifen, u. U. recht langwierig. Daher würde ich nur den Refresh machen, wenn auf die Daten nicht zugegriffen werden kann (z. B. nach „Umzug“ im Netz). Dazu einfach einen Eintrag (oder die Anzahl der Datensätze) einer Tabelle auslesen und im Fehlerfall den Refresh anstoßen.

Damit hat man schon einmal die wesentlichen möglichen Probleme beim Programmstart erschlagen.

Gruß, Manfred