Access und externe Tabellen bei Bedarf
In Microsoft Access kann man über das Menüband „Externe Daten“ Bezüge zu Tabellen in anderen Access Datenbanken herstellen. Dies bedeutet aber auch, dass diese verknüpften Tabellen dem Anwender im Datenbankfenster „angeboten“ werden.
Das kann manchmal etwas kritisch sein, da man ggf. ein etwas großes Scheunentor öffnet. Außerdem ist es schwierig, wenn aus vielen unterschiedlichen Access Datenbankdateien Daten abgerufen werden müssen. Somit werden viele Verknüpfungen nötig und wenn es schlecht läuft, konkurrieren diese dann auch noch namentlich. Dies macht das Management manchmal extrem unübersichtlich.
Mit einem einfachen Trick ist es möglich, direkt und ohne vorherige Verknüpfung auf eine externe Tabelle zuzugreifen:
Öffnen Sie eine Neue Access Abfrage in der SQL Ansicht und geben Sie folgenden Text ein:
SELECT a.*
Gib mir alle Spalten aus der Tabelle „artikel„, welche sich in der Datei „beispiel_db.accdb“ befindet.
FROM artikel AS a IN ‚beispiel_db.accdb‘;
Im Bild oben ist zu erkennen, dass die Datenbank keine eigenen Tabellen enthält. In diesem Beispiel gehen wir davon aus, dass sich die Datei „beispiel_db.accdb“ im gleichen Verzeichnis befindet.
Vereinfacht lautet die SQL-Syntax wie folgt:
SELECT ...
FROM externer_tab_name IN 'externe_accdb_datei';
Mehrere verknüpfte Access Tabellen
Allerdings gibt es hier eine kleine Einschränkung: Wird das Schlüsselwort IN im FROM Abschnitt des SQL Befehls verwendet, ist dieser somit beendet. Kein Komma, kein Join; also nur eine einzige externe Tabelle pro SELECT-Befehl. Dies bestätigt auch die Microsoft Dokumentation.
Deshalb habe ich ein wenig probiert und bin auf ein kleines Workaround gekommen, bei dem ich mich einer SQL-Unterabfrage bediene:
SELECT a.*, l.*
Bilde einen Join aus zwei Unterabfragen, welche jede für sich aus einer externen Tabelle ihre Daten abzieht.
FROM
(
SELECT *
FROM artikel IN ‚beispiel_db.accdb‘
) AS a
INNER JOIN
(
SELECT *
FROM lieferanten IN ‚beispiel_db_2.accdb‘
) AS l
ON a.[lieferanten-nr]=l.[lieferant-nr]
;
Wer es gewohnt ist, SQL Befehle in Microsoft Access mit Visual Basic (VBA) zu generieren, wird an diesem Tipp sicherlich auch seine helle Freude haben.