Power Builder同時連線多個資料庫(轉)

heying1229發表於2007-07-17
只 需 設 置 兩 個 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_USERsoftwaremicrosoftwindowscurrentversionexplorerg", "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
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10172717/viewspace-926878/,如需轉載,請註明出處,否則將追究法律責任。

相關文章