51Testing软件测试论坛

标题: 数据表GetcurrentRow问题!!麻烦大家来看看,帮助一下。谢谢。。。 [打印本页]

作者: zhengxiao025    时间: 2008-4-29 15:59
标题: 数据表GetcurrentRow问题!!麻烦大家来看看,帮助一下。谢谢。。。
我需要用到一个循环条件。为Do While DataTable.GetSheet("Action1").GetcurrentRow<=DataTable.GetSheet("Action1").GetRowCount。。。。。但是最后出来了死循环。检查时发现。循环到最大行再用DataTable.GetSheet("Action1").SetNextRow时,Do While DataTable.GetSheet("Action1").GetcurrentRow的值变为了1。这是什么原因呀。难道数据表就是这样的。有没有什么解决办法呀。。。。
作者: wyy83    时间: 2008-4-29 16:22
[转]总结DataTable从excel中读取数据的方法
Option explicit
Dim rowcount'存储数据总行数
Dim filepath'获取excel表格路径
Dim i'循环变量
filepath=pathfinder.Locate("webmail_option_preference_hintSendSuccess.xls")
datatable.Import(filepath)'excel表中只有一个sheet有数据使用Import,如果excel中多个sheet有数据,这里就要使用ImportSheet来指定具体导入哪一sheet表的数据了
rowcount=datatable.GetRowCount'统计行数
For i=0  to rowcount-1
        datatable.GetCurrentRow '置当前行为活动行
        send=datatable.Value("send")'这里Value("send")中的send为excel中的列名,是在设计测试数据时确定的
        name1=datatable.Value("name1")'同上        
。。。。。。
datatable.SetNextRow'下一行
        If   datatable.GetCurrentRow>rowcount Then '当前行大于总行数,退出循环
                  Exit for
        End If
Next

[ 本帖最后由 wyy83 于 2008-4-29 16:26 编辑 ]
作者: zhengxiao025    时间: 2008-4-29 16:40
首先,先谢谢您。。。。。我和您用的方法差不多呀。不过到第12行的时候再datatable.SetNextRow,就又变回第1行了。怎么回事儿呢。是不是我程序哪里编的有错误。。。那也不至于改数据表的行数吧。。。
作者: jackymail    时间: 2008-4-29 17:13
没仔细看。大概是因为test的option里面没有设置成只运行一次
作者: hsjzfling    时间: 2008-4-29 18:17
原帖由 zhengxiao025 于 2008-4-29 15:59 发表
我需要用到一个循环条件。为Do While DataTable.GetSheet("Action1").GetcurrentRow


抛开QTP不看,你的程序逻辑没问题;不过基于QTP对DataTable的设定,程序就不应该这样来判断~
前几天才在别人的帖子中提到过,DataTable中若循环到最后一行数据时再用SetNextRow,那么当前行会从第1行开始继续循环~设定就是这样的
作者: zhengxiao025    时间: 2008-4-30 09:19
哦。是这么回事呀。谢谢楼上的解答,不胜感激。。。。
作者: bertha2124    时间: 2008-4-30 10:56
又学到一招,谢谢分享!
作者: badguy    时间: 2008-4-30 14:50
是啊,那就不要这样判断就可以啦




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