51Testing软件测试论坛

标题: QTP 连接Oracle数据库,出现问题 [打印本页]

作者: konglingzhen    时间: 2008-2-1 16:30
标题: QTP 连接Oracle数据库,出现问题
问题是,连接不上数据库。还请大家尽量帮忙。

运行我的测试脚本,报错弹出提示信息: OraOLEDBpus.dll: The specified module could not be found

这是我的脚本,大家给分析一下

Public Function DBOperation(StrConnectionString,StrSql)
        Dim cnnTest
        Dim id
        Set cnnTest = createobject("AdoDb.Connection")
        Set rs = createobject("AdoDb.RecordSet")
        cnnTest.ConnectionString = StrConnectionString
        cnnTest.Open  
       
        cnnTest.BeginTrans
        Set rs = cnnTest.Execute( StrSql)
        id = rs("DICR_REQUEST_ID")
        messagebox(id)
        cnnTest.CommitTrans
       
     'cnntest.RollbackTrans
        Set cnnTest = Nothing
         DBOperation = id
End Function

'3927
Dim  conn, sql
  conn = "rovider=OraOLEDB.OracleLSQLRSet=1assword=123456 ;User   ID=rocis;Data   Source=ro"
  sql = "select DICR_REQUEST_ID from DICR_REQUEST where DICR_REF_NBR = 200607-7101-007"


Call DBOperation(conn, sql)
作者: konglingzhen    时间: 2008-2-1 17:47
怎么没有人回答呢??
自己顶顶,别沉了~~~
作者: yuandjing    时间: 2008-2-2 09:40
我帮不了你,来帮你顶顶
作者: konglingzhen    时间: 2008-2-2 10:39
[attach]38916[/attach]

[ 本帖最后由 konglingzhen 于 2008-2-2 10:40 编辑 ]
作者: gavin.chen    时间: 2008-2-2 23:38
这是oracle 数据库的问题。
1.确保在oracle安装目录下有 OraOLEDbpus.dll 这个文件。
2.如果oracle下有这个文件,那么将oracle 安装目录下bin文件路径加到环境变量里面。

你的脚本一点问题都没有,完全是oracle配置不当。
作者: sunqiang1024    时间: 2008-2-3 10:25
我是这样连接数据库的:
' *********************************************************************************************
' 函数说明:传入相应的sql和列的名称 ,取到相应列的值;
' 参数说明:
'                                  (1)sql:查询语句;
'                               (2)colname:取得列的名称;
' 返回结果:
'          (1):取到列的值  ;
' 调用方法:
'           var= DB (sql,colname)
'修改时间:2008年1月22日17:31:31
' *********************************************************************************************
Public  Function DB (sql,colname)
Dim res,cmd
Set res=createobject("adodb.recordset")
Set cmd=createobject("adodb.command")
Cmd.activeconnection="Driver={Microsoft ODBC for Oracle};Server=oradb10;Uid=bpm611_testwd=bpmtest;"
Cmd.CommandType = 1
'msgbox sql
Cmd.CommandText = sql
Set res = Cmd.Execute()
'msgbox  res(colname)
DB=res(colname)
res.close
Set res=nothing
Set Cmd.activeconnection=nothing
Set cmd=nothing
End Function
需要两个前提,1、安装Oracle的客户端,然后配置一个本地net服务名2、在控制面板->管理工具->数据源(ODBC)中新建一个Microsoft ODBC for Oracle数据源,服务的名称就是Oracle配置的本地net服务名。(注意:新建后检查D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN目录下tnsnames.ora,查看建的net服务名就应该是刚新建的名称)

[ 本帖最后由 sunqiang1024 于 2008-2-3 11:59 编辑 ]
作者: konglingzhen    时间: 2008-2-3 11:41
to:sunqiang1024
看到你的Cmd.activeconnection =="Driver={Microsoft ODBC for Oracle};Server=oradb10;Uid=bpm611_test;passwd=bpmtest;"
Server 值是什么??
而且好像没有指定数据源呢~~
作者: sunqiang1024    时间: 2008-2-3 11:45
server就是数据源的名字
作者: konglingzhen    时间: 2008-2-3 11:56
哦,不是,我写的是sevice name,现在好用了。。。
问题和还有一个~~

'msgbox  res(colname)
DB=res(colname) 报错~~~
不知道是为什么。。
因为我的res,其实查询出来应该只有一个值~!~
作者: sunqiang1024    时间: 2008-2-3 12:00
报什么错啊,发个错误信息啊 colname,这个变量是你要取的列的名字
作者: lucaszhou    时间: 2009-1-2 10:12
我也是
DB=res(colname)   报错.
错误信息为:
"Item cannot be found in the collection corresponding to the requested name or ordinal"

我已确认 colname 是我数据库表列的名字("SEQENCE_ID")

Could you please help me? Thanks.
作者: lucaszhou    时间: 2009-1-2 23:54
Problem resolved. It looks like you can not retrieve only one value. Thanks.




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2