WklLinkManager
WklLinkManager hält die verknüpften ODBC-Tabellen eines Access-Frontends in Übereinstimmung mit einer Konfiguration,
die im Frontend selbst gespeichert ist, je Profil wie DEV, TEST und PROD. Die Anwendung ruft ihn beim Start auf,
um ihre Tabellen mit den richtigen Quellen zu verknüpfen; Entwickler pflegen die Konfiguration in einem Designer, den
das Add-In WKL Extensions aus dem Menüband von Access öffnet.
Erste Schritte
Häufige Aufgaben
Schaubild
graph TD
subgraph FE["Frontend (ACCDB / ACCDE)"]
C["USysConnection – Verbindungszeilen je Profil"]
T["USysLinkedTable – zu verknüpfende Tabellen"]
L["Verknüpfte Tabellen – tblCustomer, tblOrder …"]
end
A["AutoExec: EnsureLinks 'PROD'"] --> M
D["Datenbanktools › Add-Ins › WKL Linked Tables Manager (Designer)"] --> M
C --> M["WklLinkManager"]
T --> M
M -- "anlegen, reparieren, neu verknüpfen (DAO)" --> L
M -- "testen, Tabellen auflisten (ODBC)" --> S[("ODBC-Quellen – SQL Server, Wkl OData …")]
L -. "ODBC" .-> SWichtige Funktionen
- Konfiguration in zwei lokalen Tabellen: Verbindungen in
USysConnection, Tabellen inUSysLinkedTable; Access blendet beide im Navigationsbereich aus, und sie gehen mit dem Frontend in die ACCDE ein. - Profile: Derselbe Verbindungsname hat eine Zeile je Profil; eine Zeile ohne Profil gilt für jedes Profil. Ein einziger Aufruf stellt alle Tabellen auf ein anderes Profil um.
- Prüfen vor dem Ändern:
Checklistet jede Abweichung auf (fehlend, andere Quelle, andere Remote-Tabelle, lokale Tabelle im Weg, keine Verbindung, nicht verwaltete Verknüpfung), ohne etwas zu ändern. - Reparatur beim Start:
EnsureLinkslegt fehlende Verknüpfungen an und repariert falsche; Tabellen, die bereits stimmen, bleiben unberührt.RelinkAllundRelinkverknüpfen auf Anforderung neu. - Verknüpfungen behalten ihre Eigenschaften: Eine neue Verbindung wird an der bestehenden Verknüpfung gesetzt; Beschreibungen, Formate und Nachschlagefelder der verknüpften Tabelle bleiben deshalb erhalten.
- Zerstört nie Daten: Eine lokale Tabelle mit einem konfigurierten Namen wird nie ersetzt; eine Verknüpfung, die neu angelegt werden muss, entsteht zuerst unter einem temporären Namen.
- Anmeldedaten wie in Access: Windows-Anmeldung, ein gespeichertes Kennwort oder eine Abfrage durch den Treiber, jeweils über die Parameter der Verbindung. Ein gespeichertes Kennwort steht im Klartext in
USysConnectionund in jeder Verknüpfung, auch in einer ACCDE; ziehen Sie die Windows-Anmeldung vor. - Ohne Dialoge: Verbindungstests und die Liste der Remote-Tabellen zeigen nie den Anmeldedialog eines Treibers.
- Designer mit den Seiten Verbindungen („Auf alle anwenden“ für Treiber, Server, Datenbank und Schema), Tabellen, Profile sowie Prüfen und abgleichen; geöffnet über das Add-In oder mit
ShowDesigner. - Bestehende Frontends:
ImportLinks(im Designer Vorhandene übernehmen) übernimmt die ODBC-Verknüpfungen, die ein Frontend bereits hat, in die Konfiguration.
Grundkonzepte
Die Konfiguration sind Daten des Frontends. Die zu verknüpfenden Tabellen und ihre Quellen sind Zeilen, kein Code. Eine Verteilung ändert Zeilen (oder nur das Profil, das die Anwendung nennt), nie VBA. Die Felder beider Tabellen beschreiben die Hinweise zur Klasse in der Referenz (Englisch).
Eine Verbindung ist ein Name; das Profil wählt die Zeile. USysLinkedTable.ConnectionID verweist auf eine
Verbindungszeile, maßgeblich ist aber deren Name. Für das Profil TEST verwendet der Manager die Zeile dieses Namens
mit Environment = TEST oder die Zeile dieses Namens ohne Profil. Ein neues Profil bedeutet daher neue
Verbindungszeilen; die Tabellen bleiben unberührt.
Welches Profil. Ein Vorgang verwendet das als Argument übergebene Profil, sonst die Eigenschaft Environment,
sonst das Profil, mit dem die Tabellen derzeit verknüpft sind (DetectEnvironment). Gibt es Profile und passen die
Tabellen zu keinem davon eindeutig, löst der Manager einen Fehler aus, statt zu raten; so verknüpft eine Anwendung nie
versehentlich mit der Produktion.
Vergleichen, dann nur das Abweichende ändern. Jeder Vorgang bildet zuerst die gewünschte Verbindungszeichenfolge
jeder aktivierten Tabelle und vergleicht sie mit der Verknüpfung im Frontend. Schlüsselwörter, die Treiber oder Access
von sich aus hinzufügen, werden ignoriert; ein gespeichertes Kennwort zählt. Nur abweichende Tabellen werden
geschrieben; EnsureLinks bei jedem Start kostet deshalb einen Vergleich.
Der Designer arbeitet auf einer Kopie. Bearbeitungen bleiben im Fenster, bis Sie auf OK oder Übernehmen klicken; dann wird die Konfiguration geprüft und in einer Transaktion geschrieben. Verknüpft wird immer mit der gespeicherten Konfiguration; die Seite Prüfen und abgleichen speichert ausstehende Bearbeitungen zuerst.
Runtime. Die Klasse arbeitet in ACCDB, ACCDE und Access Runtime. Die Runtime hat keine Add-Ins und kein Designermenü; Anwendungen rufen die Klasse dort aus ihrem eigenen Code auf.
Administration
Fehlerbehebung
Für Entwickler
Verwandte Themen
Keine