[Access/SQL & VB] Join

Hi,
ich habe in VB zwei Access-Datenbanken db1.mdb und db2.mdb mit jeweils einer Tabelle. Ich möchte jetzt irgendwie an ein Recordset kommen, welches Daten aus beiden anderen Recordset enthält. Bei nur einer Datenbank wäre das einfach eine SQL-Anweisung „SELCT * FROM T1,T2 WHERE T1.x=T2.x“. Da jetzt aber die zwei Recordsets T1 und T2 in verschiedenen Datenbankdateien sind, wie bekomme ich das hin??

Ralph

(Und sagt jetzt nicht, das gehört nach VB, da war ich schon…)

Hi,

(Und sagt jetzt nicht, das gehört nach VB, da war ich
schon…)

Hehe… willkommen ins Brett :smile:

Ist Dir damit geholfen, wenn Du eine der beiden Tabellen auf der anderen MDB verknüpfst? Dann kannst Du sie ja als lokale Tabelle ansprechen und Dein relativ triviales SQL ansetzen.

Gruß

J.

Hi,

(Und sagt jetzt nicht, das gehört nach VB, da war ich
schon…)

Du bist doch noch im falshcn Brett. zwei Bretter weiter oben gibt es noch ein Access-Brett :smile:

Gruß

J.

Naja Access?

Du bist doch noch im falshcn Brett. zwei Bretter weiter oben
gibt es noch ein Access-Brett :smile:

Das Brett habe ich gesehen, jedoch geht es wohl wiet mehr um die Datenbankprogrammierung und um VB statt um Access. Ich könnte ja auch über ODBC verknüpfte SQL-Datenbanken haben. Dann habe ich immer noch zwei Recordset-objecte und will unter VB einen outer join machen…

Ralph

Post mortem? :wink:

Ist Dir damit geholfen, wenn Du eine der beiden Tabellen auf
der anderen MDB verknüpfst? Dann kannst Du sie ja als lokale
Tabelle ansprechen und Dein relativ triviales SQL ansetzen.

Das Problem ist, dass die Access-Datenbanken in einer bestehenden Programmversion existieren und die Typdefinition nicht so einfach geändert werden kann.
Wenn man durch einen Befehl unter VB diese Verknüpfung on-the-fly erstellen kann und dann nutzen, dann wäre das natürlich toll, ich weiss nur nicht wie…

Ralph

Ist Dir damit geholfen, wenn Du eine der beiden Tabellen auf
der anderen MDB verknüpfst? Dann kannst Du sie ja als lokale
Tabelle ansprechen und Dein relativ triviales SQL ansetzen.

Das Problem ist, dass die Access-Datenbanken in einer
bestehenden Programmversion existieren und die Typdefinition
nicht so einfach geändert werden kann.
Wenn man durch einen Befehl unter VB diese Verknüpfung
on-the-fly erstellen kann und dann nutzen, dann wäre das
natürlich toll, ich weiss nur nicht wie…

Das geht, ich hab im Moment die Objekthierarchie leider nicht im Kopf: Es gibt beim Database-Objekt irgendwo eine Tabledefs-Auflistung, die Deine Tabellendefinitionen enthält. Die Attribute der Definitionen kannst Du Dir anzeigen lassen. Wenn Du auf einer verknüpften Tabelle deren Eigenschaften anschaust, kriegst Du schnell heraus, wie das geht: neuen Tabledef erstellen, Felder füllen (da wird der lokale Name der Tabelle einzutragen sein, der Name auf der entfernten DB, der Pfad der DB und ein, zwei weitere Dinge). Wenn das durch ist, hast Du eine verknüpfte Tabelle, und Dein SQL greift.

Ein ähnliches Beispiel ist in der Nordwind.mdb enthalten, dort gibt es eine Prozedur, die alle Verknüpfungen üerprüft und ggf. neu setzt.

Hoffe das hilft :smile:

Gruß

J.

Das hört sich mal gut an…
Werde das gleich mal überprüfen.

Ralph

Du kannst aber auch in SQL …
… den Namen der Datenbank mit angeben:

SELECT \*
FROM [C:\woauchimmer\DB1.MDB].Tab1 AS T1 
INNER JOIN [C:\Woauchimmer\DB2.MDB].Tab2 AS T2 
ON T1.ID = T2.ID

Gruß aus dem Norden
Reinhard Kraasch (http://www.kraasch.de - Access Tipps & Tricks)

Eigentlich brauche ich aber einen OUTER JOIN. :wink:

Also nach so einer Lösung habe ich gesucht, das muss jetzt nur noch in VB funktionieren. Bin mal gespannt…

Ralph