Power Builder能不能同时连接两个数据库
编号:QA001666
建立日期: 1999年9月5日 最后修改日期:1999年9月5日
所属类别:
忻卫:
Power Builder 能不能同时连接两个数据库,并且在它们之间传输数据? 假如不能,如何解决远程数据库之间的数据交换问题?假如远程 数据库是不同的数据库,比如一个是FoxPro,另一个是SQL Server,那么又该如何解决不同数据库之间的数据交换问题?
回答:
只需设置两个TRANSACTION对象即可。
以下为同时连接SQL SERVER和DBF数据库的示例:
连接SQL SERVER:
SetPointer(HourGlass!)
//窗口居中
f_center(this)
//根据sgselect 连接不同的套
string sSelect
string temp
sSelect="d_gdzc"+sgselect
SQLCA.DbParm = ProfileString(gzINIFile,"Database","DbParm","")
SQLCA.DBMS = ProfileString(gzINIFile,"Database","DBMS","")
SQLCA.Database = sSelect
SQLCA.ServerName = ProfileString(gzINIFile,"Database","ServerName","")
SQLCA.LogId = "sa"
RegistryGet("HKEY_CURRENT_USER\software\microsoft\windows\currentversion\explorer\g", "a", RegString!,temp )
f_anencrypt (temp,SQLCA.LogPass)
SQLCA.AutoCommit = false
SQLCA.Lock = ProfileString(gzINIFile,"Database","Lock","")
connect using sqlca;
IF SQLCA.SQLCode <> 0 THEN
MessageBox("联接失败", &
"不能联接数据库!(错误信息:" + SQLCA.SQLErrText+")")
setpointer(Arrow!)
RETURN
halt close
END IF
定义函数:
fuction f_connectdbf(string sdbparm) return any
string nul //用于生成null值
transaction trans_name
trans_name=create transaction
trans_name.DBMS = "ODBC"
//trans_name.Database = "ZWDBF"
//trans_name.LogId =
//trans_name.LogPass =
trans_name.AutoCommit = False
trans_name.DBParm = sDBParm
//trans_name.Lock =ProfileString(gzINIFile,"Database","Lock","")
//trans_name.DbParm =ProfileString(gzINIFile,"Database","DbParm","")
CONNECT USING trans_name;
IF trans_name.SQLCode <> 0 THEN
MessageBox("联接失败", &
"不能联接财务数据库! 请检查财务路径是否正确。(错误信息:" + SQLCA.SQLErrText+")")
rollback;
return setnull(nul)
else
return trans_name
END IF
连接FOXPRO数据库(同时连接第二个数据库,还可以连接第三、第四个):
openwithparm(w_disp,"正在联接DBF卡片数据库...",parent)
transaction sqldbf
//用SQLDBF连接财务(固资)数据库
sqldbf=f_connectdbf("Connectstring='DSN=gzdbf'")
//判断是否联接成功
if isnull(sqldbf) then
Messagebox("出错","联接DBF固定资产数据库出错!")
end if
此问题由赵韶平回答。
| |
|
|
| |
|
|