centurystone 发表于 2008-8-1 14:50:22

QTP编程描述查询数据表中数据集出错.(已解决)

我用QTP手工编写了数据库连接,并且测试通过,但是当查询语句中没有查询到数据时就会报错,如下面:蓝色的部分执行正常,红色部分却报异常。哪位大侠给帮忙看下。
Dim count1,a
'设置数据库连接
set cnn=createobject("adodb.connection")
set objrsa=createobject("adodb.recordset")
cnn.open "Provider=OraOLEDB.Oracle.1;Password=XXX;Persist 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:42

你也知道是由于数据集没有记录造成的
那先判断是否有记录,再进行赋值阿

centurystone 发表于 2008-8-1 15:03:17

回复 2# 的帖子

试过了,
把If a is nothing Then换成
If objrsa("pwd") is nothing Then后
运行时直接跳过执行else语句了

没有蛀牙 发表于 2008-8-1 15:27:13

这个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:28

呵呵,多谢没有蛀牙,已经OK了:victory:
If not objrsa.eofThen
'得到字段card_pswd的值赋值给了对象objcard_pswd
    objcard_pswd=objrsa("card_pswd")
        msgbox("数据表中已存在该数据,不允许执行充值操作")
       。。。。。
else
        msgbox("数据表中无数据,允许执行充值操作")
                     。。。。。
End If
页: [1]
查看完整版本: QTP编程描述查询数据表中数据集出错.(已解决)