51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2133|回复: 3
打印 上一主题 下一主题

[原创] 如何在确定Datatable的循环次数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-11 20:07:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天我一直在忙着做QTP的脚本,今天遇到了一个棘手的问题,弄了一天也没有好办法解决。
我要做的工作是将测试报告作为附件在执行完自动化测试脚本之后,发送到程序员的邮箱里。
我大概是这么写的:
               '先将*.xls文件导入
               DataTable.ImportSheet "C:\***\****l.xls","MailTable","MailTable"

               '从文件读取发送人列表——To
        nextRow = empty                '清空值,以便后面使用
        Do While DataTable.RawValue(1,"MailTable") <> Empty
                nextRow = DataTable.RawValue(1,"MailTable")
                mailTo = mailTo + nextRow  +  ";"
                DataTable.SetNextRow
        Loop
        mailTo = left( mailTo,len(mailTo) - 1 )                '去除最后的分号
        DataTable.SetCurrentRow(1)

                '从文件读取抄送人列表——CC
        nextRow = empty                '清空值,以便后面使用
        Do While DataTable.RawValue(2,"MailTable") <> Empty
                nextRow = DataTable.RawValue(2,"MailTable")
                mailCC = mailCC + nextRow  +  ";"
                DataTable.SetNextRow
        Loop
        mailCC = left( mailCC,len(mailCC) - 1 )                '去除最后的分号
        DataTable.SetCurrentRow(1)
…………………………

但是如果此时*xls文件中,第二列的行数是该表单中最长的一行,程序根据循环走到第二列最后一行时,本应该读到“DataTable.SetNextRow”这一行的时候继续向下读,读到的值是空值,就能退出循环了,但是,程序却没有这样做,而是读到“DataTable.SetNextRow”这一行的时候,返回到了该列的第一行,结果就陷入了死循环中。
各位同仁是否也遇到过同样的问题,因该如何解决呢?
我只想能够把每一列的内容读出来,不落下任何一行的信息,也不多读取多余的信息。

[ 本帖最后由 金城月 于 2007-5-11 20:09 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-5-12 08:54:42 | 只看该作者
谈谈我的看法:
我觉得你应该去看看SetNextRow的说明,QTP help里面是这样说的."If the current row is the last row in the Data Table, applying this method sets the first row in the Data Table as the new current row. " 这也就是为什么你的程序会进入死循环的原因吧.因为你的do 条件永远都为真了!
即然*.xls文件你有了,为什么不用DataTable.GetSheet("MySheet").GetRowCount 得到该sheet的最长列的行数,做一个for 循环呢?

[ 本帖最后由 stone821021 于 2007-5-12 09:09 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-5-12 12:42:15 | 只看该作者
感谢2楼的朋友,问题已经解决了,呵呵。for循环到最大列数,已经可以实现功能了。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-5-12 15:46:49 | 只看该作者
sdlkfj3 不用客气,能运行了就好!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-21 00:26 , Processed in 0.070201 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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