当前位置: 代码迷 >> PB >> 可不可以同时连接两个数据源?解决方法
  详细解决方案

可不可以同时连接两个数据源?解决方法

热度:110   发布时间:2016-04-29 09:43:44.0
可不可以同时连接两个数据源??
有两数据源 想同时连接,并且想使用一个中的数据进行更新另一数据源的数据,怎么实现?

连接 数据源1
连接 数据源2


{提取数据源1数据
 更新数据源2数据}
 

关闭数据源1
关闭数据源2


可以实现吗??
请高手给个具体实现方法


------解决方案--------------------
同时访问多个数据库

当需要在一个应用中同时访问多个数据库时,就要用到多个事务对象。可以用SQLCA与一个数据库连接,但是对于其它的数据库,每个库则必须建立一个事务对象。在创建事务对象前,应考虑它的使用范围,可根据需要声明为全局对象或实例对象。

下面以在一个应用中需同时操作Foxpro和Access两种数据库为例,说明创建事务对象的过程。该例要在同一个数据窗口中同时显示Foxpro中的AA表和Access中的BB表,PowerScrip t语句如下:

∥声明事务对象

Transaction Tr_foxpro

Transaction Tr_access

∥建立事务对象

Tr_foxpro=Create Transaction

Tr_access=Create Transaction

∥给事务对象的属性赋值

Tr_foxpro.DBMS="ODBC"

Tr_foxpro.Dbparm="ConnectString=‘DSN=S_foxpro"

Tr_access.DBMS="ODBC"

Tr_access.Dbparm="ConnectString"=‘DSN=S_access"

∥建立数据库连接

Connect Using Tr_foxpro

Connect Using Tr_access

要在一个窗口中定义二个不同的数据窗口分别对应二个不同的库,首先要按前述的步骤建立各自的数据源,设数据源名分别为S_foxpro和S_access。然后在各自的数据源下制作数据窗口。在窗口OPEN事件中写入如下Script程序:

∥建立数据窗口与事务对象的连接

Dw_1.Settransobject(Tr_foxpro)

Dw_2.Settransobject(Tr_access)

∥将数据库中的数据检索到数据窗口中

Dw_1.Retrieve()

Dw_2.Retrieve()

当这个应用程序执行时,就会在两个数据窗口显示两个数据库的内容,读者可以仿照以上的方法,设计出同时访问多个不同数据库的程序。

以上阐述的是应用ODBC访问不同数据库的方法,Power Builder实际上还提供另一种方法访问数据库,即专用数据接口,它的使用方法与ODBC有类似之处


------解决方案--------------------
如果是MS SQL Server,也可以使用链接服务器,先再数据库上设置好,然后再PB里面直接使用即可。
这样只需要一个数据源。
链接服务器的使用请参考此文章
------解决方案--------------------
用2楼方法即可,创建多少事务去连接不同的数据库
  相关解决方案