Access und externe Tabellen bei Bedarf

Alexander Achenbach/ Access, Datenbank, SQL

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.*
FROM artikel AS a IN ‚beispiel_db.accdb‘;

Gib mir alle Spalten aus der Tabelle „artikel„, welche sich in der Datei „beispiel_db.accdb“ befindet.

Access Abfrage SQL zu externer Tabelle

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.*
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]
;

Bilde einen Join aus zwei Unterabfragen, welche jede für sich aus einer externen Tabelle ihre Daten abzieht.

Access Abfrage SQL zu mehreren externen Tabellen

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.

Share this Post