Cnn.Open
If Cnn.State = 0 Then
Reporter.ReportEvent micFail, "testing", "连接数据库失败"
else
Reporter.ReportEvent micPass, "testing", "连接数据库成功"
End If
'-----------我定义了ODBC连接,ODBC的数据源名是ORACLETEST,测试ODBC连接也通过,但出现“无法处理服务名”,我要装ORACLE ADD-IN 吗?作者: xiaonan 时间: 2006-7-3 17:58
只是连接数据库的话,我想不需要插件的.参考一下这段代码
Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"
Cmd.CommandType = 1
sql="select name from company where (id=1)"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing作者: fs_ivy 时间: 2006-7-3 18:05
改DRIVER为DRIVER={Oracle in OraHome92 }就可以了,
再问取数据表的内容也不需ORACLE -ADD IN,什么时候要呢?作者: xiaonan 时间: 2006-7-3 18:38
在录制识别ORACLe控件的时候,需要ORACLE -ADD IN,作者: aprina 时间: 2006-7-3 21:10
Data Source=oracletest中的"oracletest"需要在tnsnames.ora中定义好。
Provider 要设置为OraOLEDB.这是连接oracle server的.
定义ODBC 数据源时需要driver为: oracle in OraHome92 或 microsoft ODBC for oracle
另外xiaonan版主的脚本中: Provider=SQLOLEDB.1, 是连接SQLSERVER的.作者: xiaonan 时间: 2006-7-4 08:41
对,我的那段代码是连接SQL的,因为手头上没oracle来连.其实原理都是一样的,我只是给大家一点参考.作者: aprina 时间: 2006-7-5 13:20
Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"
Cmd.CommandType = 1
sql="select name from company where (id=1)"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing
问一下xiaonan版主的这段脚本中,如果希望增加一个检查点,如:当name='admin'的时候,在result report中给出pass的报告,怎样写呢?
我试着写了几个,总报“在对应所需名称或序数的集合中,未找到项目。" 的错误,希望帮助给出正确的脚本,多谢了。作者: xiaonan 时间: 2006-7-5 13:57
If name="admin" Then
Reporter.ReportEvent 0, "pass","pass"
else
Reporter.ReportEvent 1, "fail","fail"
End If
[ 本帖最后由 xiaonan 于 2006-7-5 14:57 编辑 ]作者: aprina 时间: 2006-7-5 14:38
增加这一段后,不论name是否='admin',都返回到成功.作者: xiaonan 时间: 2006-7-5 14:51
你把name值取出来看看,然后单步调试,看看原因作者: aprina 时间: 2006-7-5 15:25
是这样的,
1. 如果这样写检查语句,在If res.fields(seat_id)=0 Then这行会报“在对应所需名称或序数的集合中,未找到项目。"
sql="select seat_id from fm_seat where seat_id=3086"
Cmd.CommandText = sql
Set res = Cmd.Execute(sql)
If res.fields(seat_id)=0 Then
Reporter.ReportEvent micpass, "test","output"
else
Reporter.ReportEvent micfail, "testl","fail"
End If
2.如果按下面这样改写if 语句就会直接pass.但是实际上这个语句:select seat_id from fm_seat where seat_id=3086(查出来的seat_id肯定是3086),所以我觉得应该每次都应该返回失败的。
If seat_id=1 Then
Reporter.ReportEvent micpass, "test","output"
else
Reporter.ReportEvent micfail, "testl","fail"
End If作者: xiaonan 时间: 2006-7-5 16:14
1 res("seat_id")或者直接res(0)这样来取字段值
2 你不能把字段名直接当变量使用啊
[ 本帖最后由 xiaonan 于 2006-7-5 16:16 编辑 ]作者: aprina 时间: 2006-7-5 16:22
res.fields("seat_id") =0 与res(0)=0 ,都报同样的错误: general run error.作者: xiaonan 时间: 2006-7-5 16:29
Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"
Cmd.CommandType = 1
sql="select seat_id from fm_seat where seat_id=3086"
Cmd.CommandText = sql
Set res = Cmd.Execute()
是res("seat_id"),还有你单步调试一下啊,具体是哪句出错作者: xiaonan 时间: 2006-7-5 16:30
还有要转换一下类型都用整形后再比较作者: aprina 时间: 2006-7-5 17:47
已经解决了,谢谢!把解决过程跟大家沟通一下
1〉如果num=res.fields("seat_id"),if num>0 处会报类型不匹配
2〉如果用if int(num)>0, 报语法错误
在QTP中,dim num as int ,dim num as integer时,报 The test run cannot continue duo to a syntax error
后来发现int(num) ,dim num as int 是VB的用法,可能在Expert View中的vb script村在一点小差异,才会发生上面的错误。
最终是用Cint(res.fields("seat_id"))>0 解决了。
另外:前面报那个““在对应所需名称或序数的集合中,未找到项目。" 错误,是由于sql="select seat_id from fm_seat where seat_id=3086" 这个语句没有记录返回。