怎样实现ADO在不同联接上的查询?(100分)

  • 主题发起人 主题发起人 Lee.JH
  • 开始时间 开始时间
L

Lee.JH

Unregistered / Unconfirmed
GUEST, unregistred user!
Form1上有ADOConnection1和ADOConnection2,Form1上的ADOQuery1如何能同时查询得到
ADOConnection1和ADOConnection2分别联接的数据库?如 select C1.aa,C2.bb from
ADOConnection1.c1,ADOConnection2.c2 where C1.cc=c2.cc C1和C2是表名,aa,bb
和cc是字段名。
 
异 构 查 询
所谓异构查询,就是同时查询几个不同的数据库。这些数据库的类型可以不同。
例如,可以同时查询Oracle数据库、Sybase数据库和本地的dBASE表。
当程序执行异构查询的时候,BDE通过Local SQL来分析和处理这个查询,而不是用与服务器相关的特定的SQL语法。
建立一个异构查询的一般步骤是这样的:
第一步,把一个TQuery构件放到窗体或数据模块上,让DatabaseName属性空着。
第二步,为要查询的每一个数据库建立一个单独的BDE别名。
第三步,设置SQL属性以指定要执行的SQL语句。在SQL语句中,表的名字前要加别名和冒号,并且用双引号括起来。字段名前要加表名和小圆点。
例如:
SELECT Customer.CustNo, Orders.OrderNo
FROM "Oracle1:CUSTOMER"
JOIN "Sybase1:ORDERS"
ON (Customer.CustNo = Orders.CustNo)
WHERE (Customer.CustNo = 1503)
第四步,设置Params属性提供参数。
第五步,调用Prepare通知BDE或服务器做好准备,然后调用Open或ExecSQL执行查询。
如果显式地使用TDatabase构件连接数据库,并且设置了它的DatabaseName属性定义了应用程序专用的别名,
在SQL语句中可以用专用的别名代替BDE别名。

 
这样做不行,因为你的adoquery1.connect属性只能指定一个
你可以创建一临时表,把两个表里面的数据取出来放到临时表里面
再从临时表里面取
 
别人问的是ADO下面,BDE的谁不知道呀?!
 
基本上是无解了 :(
 
用的什么数据呀,用后台做可以select a.*,b.* from master..sysobjects a,
temp..sysobjects
 
Select A.field1,B.field2 From 数据库1.dbo.表1 A,数据库2.dbo.表2
上面一条是用到Sql查询分析器中的dbo:是指数据库用户名
若要放到delphi则
Select A.field1,B.field2 From 数据库1..表1 A,数据库2..表2
就可以了。
 
To:liujunzhang
如果是Access 和SQL Server两个的 ADOConnection连接呢?
BDE可以,ADO是如何实现,我这个问题也遇过,不过都不感再想了。
 
同意楼上!
如果是ado不好办!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部