51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2094|回复: 3
打印 上一主题 下一主题

[求助] QTP中数据字典的脚本出错,求大神看

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-7-26 16:43:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yinjiajia0626 于 2014-7-26 17:52 编辑
  1. '调用D盘的1.txt资源,在setting中
  2. Class oDataDic
  3.    Private oDic 'DIctionary对象
  4.         Public oWorkBookPath 'xls文件对象
  5.         Public oSheetName
  6.     Public oRowNo 'Rows have number
  7.    Public Default Function Load(oWorkBookPath,oSheetName,oRowNo)
  8.       With Me
  9.    .oWorkBookPath=oWorkBookPath
  10.    .oSheetName=oSheetName
  11.         .oRowNo=oRowNo
  12.        End With
  13.            BuildContext
  14.            Set Load=oDic
  15.    End Function
  16.    Private Function BuildContext
  17.           Dim oConn,oRS,arrData,x
  18.           Set oConn=CreateObject("adodb.Connection")
  19.           Set oRS=CreateObject("adodb.RecordSet")
  20.           oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;"&_
  21.           "Data Source="&Me.oWorkBookPath&";"&_
  22.           "Extended Properties=""Excel 8.0;HDR=Yes;"";"
  23.           sQuery="Select * from ["&Me.oSheetName&"$]"
  24.           oRs.Open sQuery,oConn,3,3,1
  25.           For x=2 to oRowNo -1:oRS.MoveNext:
  26.                             Next

  27.          oDict=CreateObject("Scripting.Dictionary")
  28.          For x=0 to oRS.Fields.Count-1
  29.                  msgbox  oRS.Fields.Item(x)
  30.                  With oDict
  31.                  .Add "" & oRS(x).Name,"" & oRS.Fields(x)
  32.                  End With
  33.          Next
  34.    End Function

  35. Private Property Let oDict(ByVal val)
  36.    Set oDict=Val
  37. End Property

  38. Private Property Get oDict()
  39.    Set oDict = oDic
  40. End Property

  41. End Class
  42. Set mDataContext=New oDataDic

  43. oWorkBookPath="D:\1.xls"
  44. oSheetName="Sheet1"
  45. oRowNo=3
  46. Set mDict=mDataContext.Load(oWorkBookPath,oSheetName,oRowNo)
  47. MsgBox mDict("Age")
  48. MsgBox mDict("Sex")
  49. MsgBox mDict("Username")
  50. MsgBox mDict("Password")
  51. Set mDict=Nothing
复制代码

出错的截图:


附件为我用到的1.xls

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

4#
发表于 2014-8-7 14:30:57 | 只看该作者
'调用D盘的1.txt资源,在setting中
Class oDataDic
   Private oDic 'DIctionary对象
        Public oWorkBookPath 'xls文件对象
        Public oSheetName
    Public oRowNo 'Rows have number
   Public Default Function Load(oWorkBookPath,oSheetName,oRowNo)
      With Me
   .oWorkBookPath=oWorkBookPath
   .oSheetName=oSheetName
        .oRowNo=oRowNo
       End With
           BuildContext
           Set Load=oDic
   End Function
   Private Function BuildContext
          Dim oConn,oRS,arrData,x
          Set oConn=CreateObject("adodb.Connection")
          Set oRS=CreateObject("adodb.RecordSet")
          oConn.Open "rovider=Microsoft.Jet.OLEDB.4.0;"&_
          "Data Source="&Me.oWorkBookPath&";"&_
          "Extended Properties=""Excel 8.0;HDR=Yes;"";"
          sQuery="Select * from ["&Me.oSheetName&"$]"
          oRs.Open sQuery,oConn,3,3,1
          For x=2 to oRowNo -1RS.MoveNext:
                            Next

         oDict=CreateObject("Scripting.Dictionary")
         For x=0 to oRS.Fields.Count-1
                 msgbox  oRS.Fields.Item(x)
                 With oDict
                 [color=Red].Add "" & oRS.Fields(x).Name,"" & oRS.Fields(x)                 End With
         Next
   End Function

Private Property Let oDict(ByVal val)
   Set oDict=Val
End Property

Private Property Get oDict()
   Set oDict = oDic
End Property

End Class
Set mDataContext=New oDataDic

oWorkBookPath="D:\1.xls"
oSheetName="Sheet1"
oRowNo=3
Set mDict=mDataContext.Load(oWorkBookPath,oSheetName,oRowNo)
MsgBox mDict("Age")
MsgBox mDict("Sex")
MsgBox mDict("Username")
MsgBox mDict("assword")
Set mDict=Nothing
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2014-7-28 15:42:57 | 只看该作者
回复 2# ermine


    谢谢啊,Set oDict=CreateObject("Scripting.Dictionary")这个试了之后没有报错了,但是MsgBox弹出的是空值;
我是新手,还不太会细化错误。。。
总之还是很谢谢你!
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2014-7-27 16:47:08 | 只看该作者
回复 1# yinjiajia0626

28行,定义数组用要Set
Set oDict=CreateObject("Scripting.Dictionary")

我没装你写的这个数据库的provider,不确认,不过建议你在细节化错误在哪,如果注释掉数据库那部分,把定义语句放在with里面,是可以的
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 07:30 , Processed in 0.072939 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表