Tom: IDC / HTX

Beitrag lesen

Hallo Matthias

Möglicherweise liegt nur eine Begriffverwechslung vor, ich versuche es baer trotzdem mal zu erklären.

Mit einem SELECT-Statement kann man ein oder mehrere Tabellen in _einer_ Datenbank abfragen.
Im Stil:
   SELECT t1.feld1, t1.feld2, t1.feld3, t2.feld1, t2.feld2, t2.feld3  
   FROM tabelle1 AS t1, tabelle2 AS t2
   WHERE t1.keyfield1 = t2.keyfield2

Es ist _nicht_ möglich mit einem SELECT-Statement zwei (oder mehrere) Tabellen in _verschiedenen_ Datenbanken abzufragen.
Falls dies jedoch Deine Absicht ist, hast Du zwei Möglichkeiten:
1. Die Tabelle aus der einen Datenbank zu exportieren und in die andere Datenbank zu importieren.
   Access erlaubt Dir aber auch, in der einen Datenbank eine Verknüpfung auf eine Tabelle in einer andern Datenbank anzulegen.
   Dies können Tabellen in einer anderen mdb sein, es können aber auch Tabellen auf einem SQL-Server sein, die Du über ODBC ansprechen kannst.
   Auf diese verknüpften Tabellen kannst Du (mehr oder weniger) gleich zugreifen, wie auf eine feste eingebundene Access-Tabelle (Bei ODBC-verknüpften Tabellen sind nicht immer Update/Insert/Delete-Statements möglich, Select-Statemenst soltten jedoch immer funktionieren).
z.B:
   SELECT t1.feld1, t1.feld2, t1.feld3, t2.feld1, t2.feld2, t2.feld3  
   FROM eingebetteteTabelle1 AS t1, verknüpfteTabelle2 AS t2
   WHERE t1.keyfield1 = t2.keyfield2
  
2. Du kannst in einer serverseitigen Programmiersprache (z.B. ASP) zuerst eine Verbindung zu der einen Datenbank öffnen, das SQL-Statement absetzen und das Recordset-Objekt speichern, anschliessend eine zweite Connection zur anderen Datenbank öffnen, das zweite SQL-Statement absetzen und das Recordset-Objekt in einer weiteren Variable speichern.
    Anschliessend kannst Du die beiden Recordset-Objekte in einer Schlaufe parallel verarbeiten:
z.B. (ASP, mit VBScript)

' DB-Connection 1
   Set db1 = Server.CreateObject("ADODB.Connection")
   db1.Open "DataSourceName1"

' Abfrage 1
   Set rs1 = Server.CreateObject("ADODB.RecordSet")
   SQL1 = "SELECT  keyfield1, feld1, feld2, feld3 FROM tabelle1
   rs1.open SQL1, db1, adOpenDynamic

' DB-Connection 2
   Set db2 = Server.CreateObject("ADODB.Connection")
   db2.Open "DataSourceName2"

' Abfrage 2
   Set rs2 = Server.CreateObject("ADODB.RecordSet")
   SQL2 = "SELECT  keyfield2, feld1, feld2, feld3 FROM tabelle2
   rs2.open SQL2, db2, adOpenDynamic

Do Until rs1.EOF
      if rs1("keyfield1) = rs2("keyfield2") then
         ' tue irgendwas
     end if
   loop

Grundsätzlich gilt: Ein SQL-Statement kann nur Operationen in einer Datenbank ausführen.
Darum wird das SQL-Statement auch immer in Bezug zu einer DB-Verbindung ausgeführt.

Ich hoffe, dass ich damit Dein Problem lösen konnte.

Grüsse
Tom