51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1920|回复: 2
打印 上一主题 下一主题

[原创] datatable中,不同列的行数不同,循环执行报错,该如何解决呢?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-11-2 10:58:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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的数据取值就为空了,无法再进行下去。
请问有什么办法解决呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-11-2 11:29:23 | 只看该作者
分别取A,B的最大行数不行吗?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2010-11-2 13:23:58 | 只看该作者
    本帖最后由 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
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-26 07:25 , Processed in 0.065130 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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