Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1336to1340
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ODBC Abfrage mit Outer Join

ODBC Abfrage mit Outer Join
07.11.2013 10:04:05
Stefan
Hallo Zusammen,
ich versuche eine Datenbankabfrage in VBA zu erstellen, die Daten über eine ODBC-Schnittstelle aus einer Progress-Datenbank liest. Das ist alles kein Problem, davon habe ich schon einige gebastelt. Nun muß ich aber eine Abfrage erstellen, bei der ich nicht so recht weiter kommen. Ich habe 2 Tabellen (S_Lieferant und eine BB_SperrZuord). Für einige Lieferanten gibt es einen Zustand gesperrt, was in dem Feld BB_SperrZuord.Sperrgrund mit 910 hinterlegt ist. Es gibt aber nicht für jeden Lieferanten einen Eintrag vorhanden, somit muß ich mit einem Outer Join auf die andere Tabelle abfragen. Das übereinstimmende Feld der Tabellen ist S_Lieferant.Lieferant = BB_SperrZuord.Schluessel. Ich suche also alle Lieferanten, die keinen Eintrag 910 in der Tabelle BB_SperrZuord haben. Das bekomme ich leider noch nicht hin.
Ich hoffe, ihr könnt mir weiterhelfen.
Gruß Stefan

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Fall gelöst - Abfrage mit Unterabfrage
08.11.2013 09:16:25
Stefan
Hallo Zusammen,
ich beantworte meine Frage einmal selber, damit andere, die vor dem gleichen Problem stehen einen Ansatz bekommen.
Ich habe die Datenbankabfrage so aufgebaut, dass ich in der Abfrage ein Unterabfrage eingebaut habe.

01 strSQL = "SELECT S_Lieferant_0.Lieferant, " & _
02          "S_Lieferant_0.Suchbegriff " & Chr(13) & "" & Chr(10)
03 strSQL = strSQL + "FROM  S_Lieferant S_Lieferant_0 " & Chr(13) & "" & Chr(10)
04 strSQL = strSQL + "WHERE S_Lieferant_0.Firma = '2' " & _
05                     "AND S_Lieferant_0.Lieferant NOT IN ( "
06 strSQL = strSQL + "SELECT BB_SperrZuord_0.Schluessel " & Chr(13) & "" & Chr(10)
07 strSQL = strSQL + "FROM  BB_SperrZuord BB_SperrZuord_0 " & Chr(13) & "" & Chr(10)
08 strSQL = strSQL + "WHERE BB_SperrZuord_0.Firma = '2' " & _
09                     "AND BB_SperrZuord_0.Tabellenname = 'S_Lieferant' " & _
10                     "AND BB_SperrZuord_0.Sperrgrund = '910') "
11 strSQL = strSQL + ")"

Zur Erläuterung: Ab Zeile 06 ist eine Unterabfrage eingebaut. Da es sich um eine String handelt, muss die Abfrage mit IS NOT ausgeklammert werden. Bei Werten gilt .
Es wird zuerst die Unterabfrage abgearbeitet und erstellt eine temporäre Tabelle mit allen Lieferanten, die einen Sperrzustand 910 haben. Dann wird eine Tabelle erstellt in der die Lieferanten nicht mehr vorkommen. (einen OUTER JOIN brauchte man nicht)
Somit war der Fall gelöst.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige