2010-06-26 3 views
1

здесь связь у меня естьВыбор 2 таблиц из 2 разных баз данных (ACCESS)

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

так, чтобы работать с 2-х баз данных я имею 2 adoCon и когда я сделать выбор я выбрать из каждой БД Мне нужно

сейчас для проблемы ... В этой ситуации я смогу только получить всю информацию от одной, а затем от другой. но я хочу, чтобы вы могли объединить их.

db1.tblcats имеет категории и db2.tblcats имеют категории и подкатегории поэтому в дополнении, чтобы быть в состоянии выбрать оба из вместе, я должен быть в состоянии знать, что кошка от того, что дб


Шаг 2 после большой помощи

это мой код

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 

, как я могу знать, что запись пришла с какой дб? потому что мне нужно действовать difrently для каждого из

+0

Какова ваша среда программирования? –

ответ

4

Вы можете использовать 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:

Вы можете использовать псевдонимы, чтобы определить, какие базы данных поле от:

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

Или вы можете добавить виртуальное поле:

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

UNION ALL обычно быстрее.

+0

не работает ... Я получаю: «Ошибка синтаксиса в предложении FROM» помните, что оба БД имеют пароль и что они не находятся в одной папке –

+0

У меня есть другой способ. – Fionnuala

+0

ok ... я отредактировал вопрос - пожалуйста, продолжайте с вашей помощью :-) –