hur.cn - 华软网

 热门搜索

pb中用COM连接ORACLE的问题,求救!!!

  作者:未知    来源:网络    更新时间:2018/2/6
我用PB做了一个COM,编译,注册好了,里面包含已下函数代码代码都没有错误
SQLCA.LogPass = "china_jx_si"
SQLCA.ServerName = "sbyw"
SQLCA.LogId = "bgfa"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
connect using sqlca;
messagebox("",SQLCA.SQLErrText)
//返回值为true表示不需要加密或加密成功,false为加密失败
int li_state=5
select state into :li_state from da_zgb where fzh=10039262
messagebox("",SQLCA.SQLErrText)
调用没有问题,但连不上oracle,第一个messagebox报:dbms is not support in your current installation ,第二个messagebox报:transaction is not connected 
 要怎样设置才能连接上数据库呀,老大们帮忙!!!
------华软网友回答------
OLEObject PBObject
long ll_status

PBObject = CREATE OLEObject
ll_status = PBObject.ConnectToNewObject("PB90.n_pbclient_connectservice")

IF li_rc < 0 THEN     
DESTROY  PBObject
MessageBox("Connecting to COM Object Failed", "Error: " + String(li_rc)) 
Return 
Else
PBObject.of_connectdb()//连接数据库
END IF
------华软网友回复------
com组件里代码涉及路径要用绝对路径
------华软网友回复------
我上面的代码是在COM组件了,调用的地方没有问题,没有路径
------华软网友回复------
组件封装前其本身调用有没有问题?

再贴你调用的代码
------华软网友回复------
1. 你的代码少了SQLCA.DBMS的设置
SQLCA.DBMS = "MSS Microsoft SQL Server 6.x"

2.你要确保客户机上有相关的DLL文件,先在安装有PB的客户机上运行一下吧

------华软网友回复------
组件封装前其本身调用没有问题
连接代码:
OLEObject PBObject
long  li_rc
boolean flag
PBObject = CREATE OLEObject
li_rc = PBObject.ConnectToNewObject("PB90.pbjj")
IF li_rc < 0 THEN     
DESTROY  PBObject
MessageBox("Connecting to COM Object Failed", "Error: " + String(li_rc)) 
else
flag=PBObject.f_code(100392626)
END IF
com代码:
SQLCA.LogPass = "china_jx_si"
SQLCA.ServerName = "sbyw"
SQLCA.LogId = "bgfa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PBCatalogOwner='bgfa'" 
connect using sqlca;
messagebox("",SQLCA.SQLErrText)//第一个messagebox报:dbms is not support in your current installation 
//返回值为true表示不需要加密或加密成功,false为加密失败
int li_state=5
select state into :li_state from da_zgb where fzh=100392626 ;
messagebox("",SQLCA.SQLErrText) //第二个messagebox报:transaction is not connected 
if li_state =1 then return true;//1 表示已加密,不需要再解密
messagebox(string(fzh),string(li_state))
//加密部分
update nd_zgntz 
set zgn_zggz = zgn_zggz * 10,zgn_jfjs = zgn_jfjs*10,
   zgn_grsjbj = zgn_grsjbj*10,zgn_grbjlx = zgn_grbjlx*10
where zgn_fzh=:fzh and zgn_qydm=100100101 using sqlca;

//修改状态,该为已加密
if sqlca.sqlcode=0 then
update da_zgb set state=1 using sqlca;
if sqlca.sqlcode=0 then
   //成功
commit using sqlca;
      return true
end if
end if

//失败
 rollback using sqlca;
return false
------华软网友回复------
解决了,谢谢各位,是没有加: SQLCA.DBMS = "O84 ORACLE 8.0.4"
这句,再次感谢!!!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。