51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7574|回复: 14
打印 上一主题 下一主题

[原创] QTP 如何获取"指定列"的“行数”(datatable)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-10-16 10:45:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhzhw12322 于 2012-10-16 10:58 编辑

QTP 如何获取"指定列"的“行数”(datatable)
该如何写
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2012-10-16 12:46:01 | 只看该作者
LZ的问题具有二义性。
当前列的行数,那么就不一定等于最大行数MaxRowCount=DataTable.GetSheet(SName).GetRowCount .就会忽略空行,这个忽略空行,是只忽略最后面的空行呢,还是连中间的空行的忽略呢。
For i= 0 to maxRowCount next,统计你需要的行数
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-10-16 13:25:18 | 只看该作者
回复 2# xjwldlover


    你这只取到了最大行数所在列
并没有按实际列的行数取得行数
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2012-10-16 15:54:43 | 只看该作者
回复 3# zhzhw12322

。。。看最后一句,MaxRowCount 的取值是为了不必要的追问给添加上去的~

“For i= 0 to maxRowCount next,统计你需要的行数”
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2012-10-16 18:02:49 | 只看该作者
回复 4# xjwldlover


    对呀,最后一句假如遍历的是A列(有四行比如),但B列可能有八行,你这个取得是八行,你打印下试试,这样如果我想操作A列,哪样就要执行八次了
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2012-12-12 16:06:55 | 只看该作者
这个问题最后解决了吗?我也遇到相同问题了。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    7#
    发表于 2012-12-12 16:17:18 | 只看该作者
    回复  xjwldlover


        对呀,最后一句假如遍历的是A列(有四行比如),但B列可能有八行,你这个取得是 ...
    zhzhw12322 发表于 2012-10-16 18:02



            我觉得,这个看你想怎么用了,如果你只是要将DataTable用作存储数据只用,那你就纯粹的当一个Table取数使用,那你就用脚本取数据,Settings的Run设置项,就选Run one iteration only,执行的次数自己用脚本或循环来控制。
            如果你要用Run on all rows,让表格来控制执行次数,但是又将Datatable写的参差不齐,有的列是8行,有的列是4行,自然脚本写起来就非常难控制了。        我感觉与其纠结这么奇怪的用法,不如好好设计下如何使用DataTable来的会更好一些。
    .
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2012-12-12 17:01:40 | 只看该作者
    回复 7# 黑羽祭


        比如脚本中有两个for循环,循环次数都是根据指定列参数的行数来定的,而我这两列的行数又不相同。
    有什么办法可以实现吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    9#
    发表于 2012-12-12 17:27:25 | 只看该作者
    回复 8# bjbzcg


        我的话,不用QTP自带的DataTable,我用外部Excel进行调用使用。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    10#
    发表于 2012-12-12 17:27:23 | 只看该作者
    回复 8# bjbzcg


        我的话,不用QTP自带的DataTable,我用外部Excel进行调用使用。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    11#
    发表于 2012-12-12 17:27:36 | 只看该作者
    本帖最后由 黑羽祭 于 2012-12-12 17:29 编辑

    回复 8# bjbzcg


        我的话,不用QTP自带的DataTable,我用外部Excel进行调用使用。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2012-12-12 17:51:00 | 只看该作者
    回复 11# 黑羽祭


       不好意思,没太明白您的意思?
    难道外部调用Excel不存在这个问题?GetRowCount只能获取最大行数,还是不能针对不同的列循环不同的次数。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    13#
    发表于 2012-12-13 09:03:58 | 只看该作者
    回复 12# bjbzcg


        我用外部调用Excel没这么个问题。
    我的外部Excel中的内容都是读到一个二维数组里的,然后就可以用循环指定一列一行行读,当读到空的时候,就停止,就数到这一列有多少行数据了,然后定义个新的数组,把数据存出来,这个数组就是这列的信息了,要用第一行数据就 AAA(1),要知道有多少个数据,就ubound(AAA),(PS:我比较喜欢从1开始读,所以用count来数的话会吧AAA(0)也数进去,所以用Count的话记得减1)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2013-1-20 15:14:52 | 只看该作者
    我也遇到这个问题,我的解决方法如下:
    1、简单一点,直接在excel增加两行:startRow\endRow,读取参数作为for循环的控制条件。
    2、完美一点,写一个函数for循环读取某一列的单元格值,当返回空时则记录该行数。该行数则为实际所用行数
    3、像版主”黑羽祭“所说,实质上是设计好datatable的用法。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2014-1-8 15:38:21 | 只看该作者
    在QTP的datatable中点击右键—>format—>custom number,都可以自定义的。我用的version11.5
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-21 04:39 , Processed in 0.077123 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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