2010-06-26 6 views
1

ici est la connexion que j'aiSélection 2 tables de 2 bases de données différentes (ACCESS)

strCon="DBQ=" & Server.Mappath("db.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};PWD=password;" 
set adoCon=server.createobject("adodb.connection") 
adoCon.Open strCon 

donc pour travailler avec les 2 bases de données j'ai 2 adoCon et quand je fais la sélection je choisis de chaque db J'ai besoin

maintenant pour le problème ... dans cette situation, je ne serai en mesure d'obtenir toutes les informations de l'un, puis de l'autre. mais ce que je veux, c'est pouvoir mettre ensemble.

db1.tblcats a des catégories et db2.tblcats a des catégories et sous-catégories donc en plus d'être en mesure de choisir les deux l'ensemble, je dois être en mesure de savoir ce chat est de ce que db


Étape 2 après la grande aide

c'est mon code

strSQL = "SELECT name FROM tblcats union " _ 
& "select name from [MS Access;PWD=pass;DATABASE=" & Server.Mappath("../shop.mdb") & "].tblcats as bcats where bcats.father=50" 
           rs.CursorType = 3 
           rs.LockType = 3 
           rs.Open strSQL, strCon 
while not rs.eof 
response.write rs("name")&"<br>" 
rs.movenext 
wend 

comment puis-je savoir ce dossier est venu de ce que db? parce que je dois agir difrently pour chacun

+0

Quelle est votre environnement de programmation? –

Répondre

4

Vous pouvez utiliser IN:

SELECT t1.*, t2.* 
FROM T1 
INNER JOIN 
(SELECT * FROM atable 
IN 'C:\Docs\DB2.mdb') t2 
ON t1.ID=t2.ID 

EDIT:

sc = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\docs\other.mdb" 
cn.open sc 

s="SELECT * FROM t1 INNER JOIN " _ 
& "[MS Access;PWD=databasePWD;DATABASE=C:\docs\db.mdb].t2 ON t1.ID=t2.ID" 

rs.Open s, cn 

EDIT 2:

Vous pouvez utiliser les alias pour identifier quelle base de données un champ est de:

s="SELECT * FROM table1 t INNER JOIN " _ 
& "[MS Access;PWD=databasePWD;DATABASE=C:\docs\db.mdb].m ON t.ID=m.ID" 

msgbox rs.fields("m.code") & " " & rs.fields("t.code") 

EDIT 3

Vous pouvez ajouter un champ virtuel:

SELECT 1 AS "DB", Field, Field FROM ... 
UNION ALL 
SELECT 2 AS "DB", Field, Field FROM 

UNION ALL est généralement plus rapide.

+0

ne fonctionne pas ... Je reçois: "Erreur de syntaxe dans la clause FROM" être conscient que les deux de la DB a un mot de passe et qu'ils ne sont pas dans le même dossier –

+0

J'ai ajouté une autre façon. – Fionnuala

+0

ok ... j'ai édité la question - s'il vous plaît continuez avec votre aide :-) –

Questions connexes