51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8775|回复: 22
打印 上一主题 下一主题

[原创] QTP9.2-DataTable.ImportSheet读取问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-7-17 11:13:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我用语句:
DataTable.importSheet "D:\TestResult.xls",1,4
执行会报错;
而用语句:
DataTable.importSheet "D:\TestResult.xls","LogChk",4
则可以成功执行完毕

这是为什么呀???希望高手指点!
具体报错信息见附件!

在线等ING...

本帖子中包含更多资源

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

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

使用道具 举报

该用户从未签到

23#
发表于 2008-7-22 09:19:00 | 只看该作者
学习~
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2008-7-21 18:04:21 | 只看该作者
好久没见过这么好的贴子啦!!!!!!

学到并感受到很多东西!
回复 支持 反对

使用道具 举报

该用户从未签到

21#
发表于 2008-7-19 10:26:43 | 只看该作者

回复 20# 的帖子

我明白你的意思,就是说CInt这个函数会进行四舍五入,我并没有否认这点啊
只不过在LZ的代码中
DataTable.ImportSheet DataPath,SheetNum,2
他的SheetNum无非是个sheet的index,他自己定义的参数,既然是index,也就不可能定义成小数(通常做法)
那么四舍五入在这也就没有了意义,怎么就不可以用呢?
一点问题也没有啊
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2008-7-18 17:36:09 | 只看该作者
dim double1,double2
double1=526.5123
double2=526.4123
msgbox clnt(double1)
msgbox clnt(double2)
17楼自己运行自己看
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2008-7-18 15:16:09 | 只看该作者

回复 18# 的帖子

这个是QTP在报告中加入消息的语句,你可以去查下QTP的帮助,看看怎么用的
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-7-18 15:05:45 | 只看该作者
问下楼主,Reporter.ReportEvent micPass, "LoginChk", "LoginChk is OK"  这句的效果是什么
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-7-18 13:46:14 | 只看该作者
16楼,CInt无非是转换成int类型,在这里四舍五入有什么关系?都是整数的
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2008-7-18 13:27:40 | 只看该作者
CInt这个方法是4舍5入 用在这个地方为什么可以 ??????
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2008-7-18 13:13:05 | 只看该作者
非常感谢老师...哈哈..问题解决了...
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2008-7-18 11:47:39 | 只看该作者
把DataTable.ImportSheet DataPath,SheetNum,2改成:
DataTable.ImportSheet DataPath,CInt(SheetNum),2

然后再试试!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2008-7-18 11:04:26 | 只看该作者
再看我的主调Action-> TestMain

Dim DataPath,SheetInitNum,SheetNum,InitFlag,CaseNum
DataPath = "D:\TestResult.xls"
SheetNum = 1
RunAction "TestInit [TestInit]", oneIteration,InitFlag  'InitFlag是用来判断初始化Action成功与否的,若成功的话就能读到值,不会是空的,可以调用登录检查模块进行测试;

If InitFlag <>"" Then
               RunAction "LoginChk [LoginChk]", oneIteration,DataPath,SheetNum,CaseNum
        print CaseNum
End If
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2008-7-18 11:00:20 | 只看该作者
我把我代码贴上来算了:
先看被调用的Action -> LoginChk
Dim DataPath, SheetNum

DataPath = Parameter.Item("DataPath")'String类型
SheetNum = Parameter.Item("SheetNum")'String类型
print SheetNum
print DataPath

DataTable.ImportSheet DataPath,SheetNum,2

Dim LogName,Password,Expresult,ActResult,CaseNum,ActNum

CaseNum = 0

ActNum = DataTable.GetSheet(2).GetRowCount
print ActNum
While CaseNum<ActNum
     LogName = DataTable.RawValue("LoginName",2)
     Password = DataTable.RawValue("Password",2)
     ExpResult = DataTable.RawValue("ExpRslt",2)
         
     Dialog("Login").WinEdit("Agent Name:").Set LogName
     Dialog("Login").WinEdit("Password:").Set Password
    ' print LogName
     ' print Password
     Dialog("Login").WinButton("OK").Click
         
   If Dialog("Login").Dialog("Flight Reservations").Exist Then
       ActResult = Dialog("Login").Dialog("Flight Reservations").Static("Password must be at least 4 characters long").GetROProperty("text")
       Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
   else
           Window("Flight Reservation").WaitProperty "visible", True, 10000
           ActResult = Window("Flight Reservation").GetROProperty("text")
   End If
         
         
     If ExpResult = ActResult Then
                 DataTable.Value("PassOrNot",2)="PASS"
                 DataTable.Value("ActResult",2)=ActResult
          Reporter.ReportEvent micPass, "LoginChk", "LoginChk is OK"
                 Else
                 DataTable.Value("PassOrNot",2)="Failure"
                 DataTable.Value("ActResult",2)=ActResult
                   Reporter.ReportEvent micFail, "LoginChk", "LoginChk is Not Ok"
         End If
'
   
     DataTable.SetNextRow
         CaseNum = CaseNum+1
Wend


  Parameter.Item("CaseNum")=CaseNum

  DataTable.ExportSheet DataPath,2
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2008-7-18 10:43:47 | 只看该作者
总算有点眉目了....好像是和我参数有关

直接用: DataTable.ImportSheet "D:\test.xls",1,4  可以

而我如果这样做:
      Dim SheetNum
      SheetNum = 1

       DataTable.ImportSheet "D:\test.xls",SheetNum,4
   就会报错

  请问得用啥类型才能接受1个整型变量值呀...
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-7-18 10:21:04 | 只看该作者
那你再新建一个excel文档,不改sheet名,看看DataTable.ImportSheet "D:\TestResult.xls",1,4
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2008-7-18 09:55:24 | 只看该作者
55555555555好像还是不行啊....

DataTable.ImportSheet FileName, SheetSource, SheetDest

SheetSource  Variant  The name or index of the sheet in the file that you want to import. Index values begin with 1.
Sheet来源:    变量类型   你想导入文件中的Sheet名,或序号; 序号值从1开始;  

SheetDest  Variant  The name or index of the sheet in the Data Table that you want to replace with the SheetSource. Index values begin with 1.  
想要替换的Sheet(这里是个人感觉是指Run-Time DataTable中的Sheet)  变量类型  DataTable中, 你想要替换掉的Sheet名或其序号; 序号值也是从1开始计;

注:

现在我的问题不是出在SheetDest: 因为 当我用语句: DataTable.ImportSheet "D:\TestResult.xls","LogChk",4 时是完全没有问题的(SheetDest不管是2,或4都是OK的)
而当我将SheetSource从Sheet名,改为其序号就开始报错了;因此个人判断,问题不出在第3个参数,问题还是第2个参数,为啥我就不能用序号呢,好奇怪哈

继续啊...高手来指点啊....迷茫ING...
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-7-18 09:39:56 | 只看该作者
嗯..谢谢各位的指点...我试试看哈..
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-7-17 15:56:39 | 只看该作者
他的代码有可能在datatable中没有第4个sheet 造成的提示! 我刚刚实验了下如果没有第4个sheet 就会报LZ的错误 .
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-7-17 15:54:28 | 只看该作者
去检查下你的datatable表中是否有第4个sheet
应该是这个地方错了

你可以实验下DataTable.importSheet "D:\TestResult.xls",1,2
看看行不行 如果可以 就是因为你没有sheet
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-7-17 15:54:00 | 只看该作者
没有问题啊,我用DataTable.importSheet "D:\TestResult.xls",1,1 运行成功!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-30 00:32 , Processed in 0.097541 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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