51Testing软件测试论坛

标题: QTP编程描述查询数据表中数据集出错.(已解决) [打印本页]

作者: centurystone    时间: 2008-8-1 14:50
标题: QTP编程描述查询数据表中数据集出错.(已解决)
我用QTP手工编写了数据库连接,并且测试通过,但是当查询语句中没有查询到数据时就会报错,如下面:蓝色的部分执行正常,红色部分却报异常。哪位大侠给帮忙看下。
Dim count1,a
'设置数据库连接
set cnn=createobject("adodb.connection")
set objrsa=createobject("adodb.recordset")
cnn.open "rovider=OraOLEDB.Oracle.1assword=XXXersist Security Info=True;User ID=XXX;Data Source=XXXX"
'判断数据库连接是否成功
If cnn.State=0 Then
    Reporter.ReportEvent micFail, "testing", "连接数据库失败"
        msgbox("fail")
else
        Reporter.ReportEvent micPass, "testing", "连接数据库成功"
        msgbox("pass")
End If
'查询条件
objrsa.open "select pwd from TABLE1 where pwd='"&cardPwd&"'",cnn,3,2
'打印查询语句(打印语句显示正常)
msgbox("sss===select pwd from TABLE1 where pwd='"&cardPwd&"'")

'得到字段pwd的值赋值给了对象a(当数据集a中没有查询到数据时报错。如下图BOFand EOF.JPG)
a=objrsa("pwd")
'判断手机号码是否为空,若为空,则继续执行否则退出(当数据集a中没有查询到数据时提示缺少对象)
If a is nothing Then

        msgbox("手机号为空")
        Browser("...").Page("...").WebButton("下一步").Click
        Browser("...").Page("...").WebCheckBox("check").Set "ON"
        Browser("...").Page("...").WebButton("确 定").Click
        Browser("...").Page("...").WebButton("返回").Click
else
        msgbox("该密码已经被使用或者不应该执行本步骤")
        Exittest
end if


[ 本帖最后由 centurystone 于 2008-8-1 17:17 编辑 ]
作者: 没有蛀牙    时间: 2008-8-1 14:58
你也知道是由于数据集没有记录造成的
那先判断是否有记录,再进行赋值阿
作者: centurystone    时间: 2008-8-1 15:03
标题: 回复 2# 的帖子
试过了,
把If a is nothing Then换成
If objrsa("pwd") is nothing Then后
运行时直接跳过执行else语句了
作者: 没有蛀牙    时间: 2008-8-1 15:27
这个is nothing比较怪
通常我用这些:
指针是否在最后一条记录之后
If not objrsa.eof then
看某个字段是否为空
if a = "" then

试试这样行不行:
If not objrsa.eof then
a=objrsa("pwd")
if a = "" then
...
...
...
else
...
...
end if
end if
作者: centurystone    时间: 2008-8-1 17:17
呵呵,多谢没有蛀牙,已经OK了
If not objrsa.eof  Then
'得到字段card_pswd的值赋值给了对象objcard_pswd
    objcard_pswd=objrsa("card_pswd")
        msgbox("数据表中已存在该数据,不允许执行充值操作")
         。。。。。
else
        msgbox("数据表中无数据,允许执行充值操作")
                     。。。。。
End If




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