51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1614|回复: 6
打印 上一主题 下一主题

[求助] Excel数据导入到datatable之后,运行代码获取的数据会与实际值不一致

[复制链接]
  • TA的每日心情
    开心
    2014-10-24 15:07
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2014-10-23 11:10:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    具体问题如下:
    说明:红色的两行代码对应了两种方式不会同时运行,运行第一种时注释第二种,反之亦然
    1.当我运行第二种方式时,从excel文件导入的数据与在Organ_Name=datatable.Value("机构名称","修改机构")这行代码中获取的均一致,但是使用第一种方式时刚开始运行获取的数据会与excel一致,但是从某一条数据后获取到的数据会与excel当前行不一致而是固定成某个值了。即使我stop之后重新开始也是一样,除非关闭QTP重新开始运行代码。
    2.但是使用name1=DataTable.GetSheet("修改机构").GetParameter("机构名称").ValueByRow(i)这一行代码时,无论使用哪种方式获取的数据均与excel表中的数据一致
    我能够找到办法但是不太清楚这个原因是什么,具体影响的因素是调用其他有参数的action,从表中获取数据的方式datatable.Value("机构名称","修改机构")。

    附加代码:
    Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("leftFrame").Link("系统管理").Click
    Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("leftFrame").Link("机构管理").Click
    '参数依次为:导入文件路径,文件的Sheet名称,被导入的action名称
    Datatable.ImportSheet "D:\QTP\Tests\测试数据文件\1.xls","Sheet1","修改机构"
    RowCount=datatable.GetSheet("修改机构").GetRowCount
    For i=1 to RowCount
    Organ_Name=datatable.Value("机构名称","修改机构")
    RunAction " 查询机构", oneIteration,""& Organ_Name  '<第一种方式>
    RunAction " 查询机构", oneIteration  '<第二种方式>
    name1=DataTable.GetSheet("修改机构").GetParameter("机构名称").ValueByRow(i)
    datatable.GetSheet("修改机构").SetNextRow
    Next
    查询机构的代码:
    '以下2个是action"查询机构"的输入参数
    Organ_No=Parameter("Input_OrganNo")
    Organ_Name=Parameter("Input_OrganName")
    Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("leftFrame").Link("系统管理").Click
    Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("leftFrame").Link("机构管理").Click
    Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("机构列表").WebEdit("organ.organId").Set "9000"
    Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("机构列表").WebEdit("organ.organName").Set ""& Organ_Name '<第一种方式>
    Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("机构列表").WebEdit("organ.organName").Set "123" '<第二种方式>
    Browser("增值业务服务平台 ").Page("增值业务服务平台 ").Frame("机构列表").WebButton("查   询").Click


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2014-10-24 15:07
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2014-10-23 11:54:35 | 只看该作者
    没人回答自己顶上去啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2014-10-23 12:35:10 | 只看该作者
    用 DataTable.GetCurrentRow   看下当前活动的行是不是没有变化。  
    datatable.GetSheet("修改机构").SetNextRow  这种设置方法受当前活动行影响,不容易控制,
      datatable.GetSheet("修改机构").SetCurrentRow(i)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-10-24 15:07
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
     楼主| 发表于 2014-10-23 14:10:57 | 只看该作者
    dyyouai 发表于 2014-10-23 12:35
    用 DataTable.GetCurrentRow   看下当前活动的行是不是没有变化。  
    datatable.GetSheet("修改机构").SetN ...

    我试了下DataTable.GetCurrentRow用这个去获取当前行,发现行数是对的。我现在一开始运行就错了,开始就获取第二行的数据了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2014-10-23 16:04:11 | 只看该作者
    T_LONE 发表于 2014-10-23 14:10
    我试了下DataTable.GetCurrentRow用这个去获取当前行,发现行数是对的。我现在一开始运行就错了,开始就 ...

    i = 0 开始 才是第一行
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-10-24 15:07
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2014-10-24 14:46:16 | 只看该作者
    dyyouai 发表于 2014-10-23 16:04
    i = 0 开始 才是第一行

    datatable里面要从第一行开始的。。。i=1
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-10-24 15:07
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2014-10-24 14:52:15 | 只看该作者
    dyyouai 发表于 2014-10-23 16:04
    i = 0 开始 才是第一行

    不过今天试了下可以了, 应该是你说的.SetNextRow  这种设置方法受当前活动行影响。 只要datatable.GetSheet("修改机构").SetCurrentRow (i)就能解决
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-15 00:13 , Processed in 0.064540 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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