Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 7 Tabellen per SQL INNER JOIN in VBA verknüpfen

7 Tabellen per SQL INNER JOIN in VBA verknüpfen
28.10.2015 10:25:30
Feliks
Liebes Forum,
ich benötige Informationen aus einer Datenbank bestehend aus 7 Tabellen.
Mit dem Abfrage Assistenten in Access kann ich die Tabellen per Drag und Drop in ein Fenster packen, diese dann verbinden und am Ende bekomme ich eine SQL Anweisung. In Access kommt das gewünschte Ergebnis, nur im VBA Code bekomme ich Syntax-Fehler in der From-Klausel:
Nun meine Frage:
Wie verbindet man 7 Tabellen mit richtiger INNER JOIN Syntax: Gefunden habe ich
diese Information:
------------------------------
SELECT ...
FROM ((origintable
JOIN jointable1 ON ...)
JOIN jointable2 ON ...)
JOIN jointable3 ON ...
---
basically, for every extra table you join past the first, you need a bracket before the original 'FROM' table, and a closing bracket on the matching JOIN 'on' clause.
-----------------------------
Wie würdet ihr es machen
Gruß
Feliks

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 7 Tabellen per SQL INNER JOIN
29.10.2015 08:08:16
EtoPHG
Hallo Feliks,
Ich würde es so machen:
Den SQL aus Access kopieren und in eine Stringvariable packen und dann dem Query-Objekt übergeben!
Gruess Hansueli
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

7 Tabellen per SQL INNER JOIN in VBA verknüpfen


Schritt-für-Schritt-Anleitung

  1. SQL-Abfrage erstellen: Beginne damit, die SQL-Anweisung in Access zu erstellen, um die Daten aus den 7 Tabellen zu verknüpfen. Nutze den Abfrage-Assistenten, um die INNER JOINs per Drag & Drop zu erstellen. Du solltest eine Abfrage in etwa folgender Form erhalten:

    SELECT ...
    FROM ((origintable
    INNER JOIN jointable1 ON ...)
    INNER JOIN jointable2 ON ...)
    INNER JOIN jointable3 ON ...
  2. SQL-Abfrage in VBA einfügen: Kopiere die SQL-Anweisung in eine String-Variable in deinem VBA-Code. So kannst du die Abfrage einfacher an ein Query-Objekt übergeben. Beispiel:

    Dim sqlQuery As String
    sqlQuery = "SELECT ... FROM ((origintable INNER JOIN jointable1 ON ...) INNER JOIN jointable2 ON ...) INNER JOIN jointable3 ON ..."
  3. Datenabruf durchführen: Verwende die String-Variable, um die Daten abzurufen. Hier ist ein einfaches Beispiel:

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb()
    Set rs = db.OpenRecordset(sqlQuery)
  4. Daten verarbeiten: Du kannst jetzt die Daten aus dem Recordset weiterverarbeiten oder anzeigen.


Häufige Fehler und Lösungen

  • Syntaxfehler in der FROM-Klausel: Achte darauf, dass du die Klammern korrekt setzt. Bei jedem zusätzlichen INNER JOIN musst du eine öffnende Klammer vor der ursprünglichen Tabelle und eine schließende Klammer am Ende der JOIN-Klausel setzen.

  • Fehler beim Zugriff auf die Daten: Wenn du beim Abruf der Daten einen Fehler erhältst, stelle sicher, dass alle Tabellen korrekt verbunden sind und die JOIN-Bedingungen stimmen.


Alternative Methoden

Wenn du die SQL-Anweisung nicht manuell erstellen möchtest, kannst du auch Access verwenden, um die Abfrage zu speichern. Danach kannst du die Abfrage in VBA aufrufen:

Set rs = db.OpenRecordset("NameDerAbfrage")

Das ist eine einfache Methode, um mit vba excel join zu arbeiten, ohne sich um die SQL-Syntax kümmern zu müssen.


Praktische Beispiele

Hier ist ein Beispiel zur Verknüpfung von 7 Tabellen mit INNER JOIN:

SELECT a.*, b.*, c.*
FROM ((TableA AS a
INNER JOIN TableB AS b ON a.ID = b.A_ID)
INNER JOIN TableC AS c ON b.ID = c.B_ID)
INNER JOIN TableD AS d ON c.ID = d.C_ID
INNER JOIN TableE AS e ON d.ID = e.D_ID
INNER JOIN TableF AS f ON e.ID = f.E_ID
INNER JOIN TableG AS g ON f.ID = g.F_ID;

Dieses Beispiel zeigt, wie du mehrere Tabellen mit INNER JOINs verknüpfen kannst, um die gewünschten Daten abzurufen.


Tipps für Profis

  • Verwendung von Aliassen: Nutze Aliasse für die Tabellen, um den Code lesbarer zu machen. Dies ist besonders hilfreich, wenn du mehrere Tabellen gleichzeitig bearbeitest.

  • Fehlerprotokollierung: Implementiere eine Fehlerbehandlung in deinem VBA-Code, um eventuelle Laufzeitfehler zu protokollieren. Dadurch kannst du Probleme schnell identifizieren und beheben.

  • Testen der SQL-Anweisung: Teste deine SQL-Anweisung zuerst in Access, bevor du sie in VBA einfügst. So kannst du sicherstellen, dass die Syntax korrekt ist.


FAQ: Häufige Fragen

1. Wie viele Tabellen kann ich per INNER JOIN verknüpfen?
Es gibt keine feste Obergrenze, aber je mehr Tabellen, desto komplexer wird die SQL-Anweisung. Achte darauf, dass die Abfrage performant bleibt.

2. Was mache ich, wenn ich einen Fehler bei der Ausführung der Abfrage erhalte?
Überprüfe die Syntax deiner SQL-Anweisung auf Klammern und JOIN-Bedingungen. Teste sie in Access, um sicherzustellen, dass sie dort funktioniert.

3. Kann ich INNER JOIN auch in Excel verwenden?
Ja, Excel bietet auch die Möglichkeit, SQL-Abfragen über die Power Query-Funktion zu verwenden, um Daten aus verschiedenen Quellen zu verknüpfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige