热情软件屋

 

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

此问题由赵韶平回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio