51Testing软件测试论坛

标题: datatable中,不同列的行数不同,循环执行报错,该如何解决呢? [打印本页]

作者: chj_104005    时间: 2010-11-2 10:58
标题: datatable中,不同列的行数不同,循环执行报错,该如何解决呢?
本帖最后由 chj_104005 于 2010-11-2 11:14 编辑

各位大侠
小女在录制脚本时,采用的是datatable方法参数化。
打个比方,我参数化了2个数据,分别是A、B。
A的数据行数是2,B的数据行数是4.
我用DataTable.GetSheet("Action1").GetRowCount方法获取到Action1表中的最大行数,是4
用for语句循环执行For i=0 to DataTable.GetSheet("Action1").GetRowCount
当i=3时,A的数据取值就为空了,无法再进行下去。
请问有什么办法解决呢?
作者: ice1216    时间: 2010-11-2 11:29
分别取A,B的最大行数不行吗?
作者: feiyunkai    时间: 2010-11-2 13:23
本帖最后由 feiyunkai 于 2010-11-2 13:25 编辑

datatable没有现成取指定列行数的方法,可以自己加个判断:
For i=1  to DataTable.GetSheet("Action1").GetRowCount
                If  DataTable("A","Action1")<>"" Then
                                print DataTable("A","Action1")
                else
                                Exit for
                End If
                DataTable.SetNextRow
Next

'另指出LZ代码中的一个小错误:For i=0  to DataTable.GetSheet("Action1").GetRowCount,第一条数据会被重复执行一次,所以应使用For i=1 to  DataTable.GetSheet("Action1").GetRowCount
'原因:DataTable.SetCurrentRow(0)和DataTable.SetCurrentRow(1)是等价的
而DataTable.SetNextRow 若行数大于最大行数,那么会从第一行重新去数据
'假设A列数据为:1,2
For i=0  to DataTable.GetSheet("Action1").GetRowCount
DataTable.SetCurrentRow(i)
print DataTable("A","Action1")
Next
'打印出来的是:1 1 2
For i=0  to DataTable.GetSheet("Action1").GetRowCount
print DataTable("A","Action1")
DataTable.SetNextRow
Next
'打印出来的是: 1 2 1




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