51Testing软件测试论坛

标题: QTP 如何获取"指定列"的“行数”(datatable) [打印本页]

作者: zhzhw12322    时间: 2012-10-16 10:45
标题: QTP 如何获取"指定列"的“行数”(datatable)
本帖最后由 zhzhw12322 于 2012-10-16 10:58 编辑

QTP 如何获取"指定列"的“行数”(datatable)
该如何写
作者: xjwldlover    时间: 2012-10-16 12:46
LZ的问题具有二义性。
当前列的行数,那么就不一定等于最大行数MaxRowCount=DataTable.GetSheet(SName).GetRowCount .就会忽略空行,这个忽略空行,是只忽略最后面的空行呢,还是连中间的空行的忽略呢。
For i= 0 to maxRowCount next,统计你需要的行数
作者: zhzhw12322    时间: 2012-10-16 13:25
回复 2# xjwldlover


    你这只取到了最大行数所在列
并没有按实际列的行数取得行数
作者: xjwldlover    时间: 2012-10-16 15:54
回复 3# zhzhw12322

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

“For i= 0 to maxRowCount next,统计你需要的行数”
作者: zhzhw12322    时间: 2012-10-16 18:02
回复 4# xjwldlover


    对呀,最后一句假如遍历的是A列(有四行比如),但B列可能有八行,你这个取得是八行,你打印下试试,这样如果我想操作A列,哪样就要执行八次了
作者: bjbzcg    时间: 2012-12-12 16:06
这个问题最后解决了吗?我也遇到相同问题了。
作者: 黑羽祭    时间: 2012-12-12 16:17
回复  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来的会更好一些。
.
作者: bjbzcg    时间: 2012-12-12 17:01
回复 7# 黑羽祭


    比如脚本中有两个for循环,循环次数都是根据指定列参数的行数来定的,而我这两列的行数又不相同。
有什么办法可以实现吗
作者: 黑羽祭    时间: 2012-12-12 17:27
回复 8# bjbzcg


    我的话,不用QTP自带的DataTable,我用外部Excel进行调用使用。
作者: 黑羽祭    时间: 2012-12-12 17:27
回复 8# bjbzcg


    我的话,不用QTP自带的DataTable,我用外部Excel进行调用使用。
作者: 黑羽祭    时间: 2012-12-12 17:27
本帖最后由 黑羽祭 于 2012-12-12 17:29 编辑

回复 8# bjbzcg


    我的话,不用QTP自带的DataTable,我用外部Excel进行调用使用。
作者: bjbzcg    时间: 2012-12-12 17:51
回复 11# 黑羽祭


   不好意思,没太明白您的意思?
难道外部调用Excel不存在这个问题?GetRowCount只能获取最大行数,还是不能针对不同的列循环不同的次数。
作者: 黑羽祭    时间: 2012-12-13 09:03
回复 12# bjbzcg


    我用外部调用Excel没这么个问题。
我的外部Excel中的内容都是读到一个二维数组里的,然后就可以用循环指定一列一行行读,当读到空的时候,就停止,就数到这一列有多少行数据了,然后定义个新的数组,把数据存出来,这个数组就是这列的信息了,要用第一行数据就 AAA(1),要知道有多少个数据,就ubound(AAA),(PS:我比较喜欢从1开始读,所以用count来数的话会吧AAA(0)也数进去,所以用Count的话记得减1)
作者: vipwork    时间: 2013-1-20 15:14
我也遇到这个问题,我的解决方法如下:
1、简单一点,直接在excel增加两行:startRow\endRow,读取参数作为for循环的控制条件。
2、完美一点,写一个函数for循环读取某一列的单元格值,当返回空时则记录该行数。该行数则为实际所用行数
3、像版主”黑羽祭“所说,实质上是设计好datatable的用法。
作者: meizihh99    时间: 2014-1-8 15:38
在QTP的datatable中点击右键—>format—>custom number,都可以自定义的。我用的version11.5




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