如何把两个表的内容连接到一个Grid中?

hexenzhou 2004-03-19 10:54:44
要把两个表的内容连接到一个Grid,由于这两个表来自不同的数据库所以不能用SQL进行连接,但是两个表的格式相同,要求对这两个表进行Select后把他们的内容连在一起显示在一个DBGrid中。现在的设想是创建一个临时DataSet,对表1进行查询后把内容Append到临时表DataSet中,接着对表2进行查询,也把结果Append到临时表DataSet中,然后在程序代码中把DataSource的DataSet指定为这个临时DataSet,这样DBGrid就可以现实两个表的数据了。
设想是这样的,但是不知道怎么做?临时表DataSet怎么创建,又要如何把两个表的内容Append到这个临时表DataSet中呢?

表1 --来自数据库1
ID Name Address
1 jou city
2 hou wen

表2 -- 来自数据库2

ID Name Address
3 zhou gem
4 kete len

合并后在DBGrid中一起显示
-----------------------
| ID | Name | Address |
-----------------------
| 1 | jou | city |
-----------------------
| 2 | hou | wen |
-----------------------
| 3 | zhou | gem |
-----------------------
| 4 | kete | len |
-----------------------
...全文
64 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hexenzhou 2004-03-20
  • 打赏
  • 举报
回复
问题解决了,使用ClientDataSet果然是个好方法,谢谢各位了,结贴!
hexenzhou 2004-03-20
  • 打赏
  • 举报
回复
使用ClientDataSet是一个好方法,ClientDataSet在断开数据连接后还保存着数据,DataSource可以和这个ClientDataSet连接,可是我不知道如何把表1的内容Append到临时ClientDataSet中。
hexenzhou 2004-03-20
  • 打赏
  • 举报
回复
感谢各位的热心解答,对你们的方法测试了一下:
fengyvn的方案是用ADOConnection连接两个异质数据库然后缓存到RecordSet中的方法可以行得通,不过我没有用ADO连接数据库,我分别用ODAC和IBX连接Oracel和Interbase,显然它们都没有RecordSet对象,所有没法用。
firefox2000(网际流浪者)提供的查询方法看不懂,#tmp 表来自哪里呢?是要在数据库中创建临时表吗?但是我在两个数据库中都只有Select权限,没法创建临时表。还有就是在一个Query中能够访问两个数据库吗?在我看来一个Query只能和一个DataBase连接,两个数据库要用到两个Connection连接组件,然后有两个Query分别连接这两个Connection,在Query1的SQL语句如何访问另一个Connection的数据库呢?
henreash 2004-03-20
  • 打赏
  • 举报
回复
联合查询技术中去掉条件就可以了,楼主自己查查
楼主的方法也可以,不行就用一个clientdataset组件
firefox2000 2004-03-19
  • 打赏
  • 举报
回复
如果只显示的话可以作如下处理:
select * into #tmp from 表1
insert into #tmp(ID,Name,Address)
select * from 表2
select * from #tmp
drop table #tmp
fengyvn 2004-03-19
  • 打赏
  • 举报
回复
错了,在一个RECORDSET中合成.
fengyvn 2004-03-19
  • 打赏
  • 举报
回复
设置两个ADOCONNECTION分别查询两个表,然后在一个DATASOURCE中合成.最后显示在GRID中.
hexenzhou 2004-03-19
  • 打赏
  • 举报
回复
可是两个数据库也是异构的,一个是Oracle,一个是Interbase。怎么实现异构查询呢?
hnhb 2004-03-19
  • 打赏
  • 举报
回复
异构查询
这样试下看看

select A.field1,B.field2 from ":aa:A" join ":bb:B"

A,B为在两个数据库中的表
aa和bb为两个数据库的别名
hexenzhou 2004-03-19
  • 打赏
  • 举报
回复
不能在数据库中创建临时表,因为我在数据库1和数据库2中都只有只读权限(Select)。所以在数据库创建临时表的方法不可取。

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧