51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 10885|回复: 24
打印 上一主题 下一主题

[原创] 如何自动实现增加、修改DataTable里面每一列的数据

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-8-30 15:11:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在碰到一个情况:我QTP的参数化是通过读取DataTable(就是那个execel表)里面的数据来实现的,每一次跑一遍脚本,就要修改数据表里面很多列的数据(我测试的那个程序不能输入重复的数据),我想能不能通过程序,来控制那个数据表里面的每一列的数据,再开始跑脚本之前实现动态对数据的增加修改,比如说:我第一次跑脚本用的是原来已经在数据表里面设定好的数据,第二次跑的之前,先把数据表里面的每一列数据+b   列如:原来某一列第一行的值为aa,我第二次跑脚本之前让它变成aab

这样可以吗?怎么做?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-8-30 15:40:17 | 只看该作者
Colone=datatable("Name",datatable.GetSheet("Global").SetCurrentRow(1)) 'col=aa
ColTwo=Colone&"b" 'ColTwo=aab
datatable("Name",datatable.GetSheet("Global").SetCurrentRow(1))=ColTwo

试试把它加在action1里面开头位置吧!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-8-30 15:44:07 | 只看该作者
记得每次跑完要保存数据,不然那程序没用的

评分

参与人数 1综合技术指数 +10 收起 理由
小宝2006 + 10

查看全部评分

回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2015-4-23 14:35
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    4#
    发表于 2006-8-30 17:39:16 | 只看该作者
    建议把第二次跑的数据保存在datatable中的另外一列
    var1=datatable("col1",Globalsheet)
    datatable("col2",globalsheet)=var1&"b"

    var2=datatable("col2",globalsheet)
    msgbox var2

    评分

    参与人数 1综合技术指数 +10 收起 理由
    小宝2006 + 10

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2006-8-30 21:00:32 | 只看该作者
    yangkinki (kinki) 版主 的方法是可行的。楼主可以 根据 yangkinki (kinki) 版主 提供的方法试试。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2006-8-31 09:23:30 | 只看该作者
    我是把这些数据放在自定义的环境变量里面。也可以用的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2006-8-31 10:28:21 | 只看该作者

    ljitry,请问?

    原帖由 ljitry 于 2006-8-30 15:40 发表
    Colone=datatable("Name",datatable.GetSheet("Global").SetCurrentRow(1)) 'col=aa
    ColTwo=Colone&"b" 'ColTwo=aab
    datatable("Name",datatable.GetSheet(" ...



    先谢谢喔,呵呵。
    你上面写的那个name指的是某列的列名吗?
    datatable.getsheet("global") 的global是指datatable里面的包含那一列的表的表名吗?
    你上面说的SetCurrentRow(1)是指第一行吗?SetCurrentRow(2)的话是不是就是指这一列的第二行?

    因为运行老是出错,所以......呵呵

    还有你后面说的每次跑完要保存数据,怎么保存?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2006-8-31 10:33:41 | 只看该作者

    yangkinki (kinki) ,请问你?

    原帖由 yangkinki 于 2006-8-30 17:39 发表
    建议把第二次跑的数据保存在datatable中的另外一列
    var1=datatable("col1",Globalsheet)
    datatable("col2",globalsheet)=var1&"b"

    var2=datatable("col2",glob ...



    你的方法我试了,可以成功的了,谢谢。
    还想请问一下,要是想把数据写到其他的行(同一列定位到不同的行,或者是把某列某行的数据写到不同列不同行)要怎么做?
    你上面说的那个建议,原因是什么?我不是很明白,愿闻其详
    按斑竹的方法,数据是可以写进去了,就是脚本结束以后,数据没有保存的,要是想每次把跑的数据保存下来,要怎么做才好。
    谢谢~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2015-4-23 14:35
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    9#
    发表于 2006-8-31 12:10:53 | 只看该作者
    保存的话可以把数据保存到xls文件中
    datatable.Export ("d:/test.xls")
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2006-8-31 12:28:22 | 只看该作者
    原帖由 小宝2006 于 2006-8-31 10:28 发表



    先谢谢喔,呵呵。
    你上面写的那个name指的是某列的列名吗?
    datatable.getsheet("global") 的global是指datatable里面的包含那一列的表的表名吗?
    你上面说的SetCurrentRow(1)是指第一行吗?S ...


    Name 指的是列名
    global指的就是你想要张datatable里的sheet
    SetCurrentRow(1)指的就是第一行,当然把“1”变变就可以指向你所想要的那行了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2006-8-31 12:37:36 | 只看该作者
    global指的就是你想要的那张datatable里的sheet的名字
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2006-8-31 12:48:34 | 只看该作者

    回复 #7 小宝2006 的帖子

    保存:
    在跑完后的Results里面的Run-Time Data表倒到一个临时表里去,再把这张临时表倒到QTP的datatable里去,再点一下Save就可以了。这样每次跑的时候,直接跑就可以了,不用改数据。



    Export是将数据倒到一个临时表
    Import From File是将临时表的数据倒到datatable里

    [ 本帖最后由 ljitry 于 2006-8-31 13:17 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    13#
    发表于 2006-8-31 13:22:44 | 只看该作者
    感叹:这个论坛上的高手多多!sdlkfj5
    感慨:本人知道的知识太少太少了! sdlkfj1
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2006-8-31 14:28:52 | 只看该作者

    ljitry ,运行了,还是有点错,你帮我看看,哪里写的不对

    见图

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2006-8-31 15:11:56 | 只看该作者
    这是因为它是在当前的表里,这个语句它不能用在当前的表里,如果要用请换张sheet名
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    16#
    发表于 2006-8-31 15:13:36 | 只看该作者
    很明显,黄色箭头标志的那行代码有问题。把这行代码改为 下面的代码就可以了:
        colone = DataTable("draft_title","draft_to_log")
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
     楼主| 发表于 2006-8-31 15:26:30 | 只看该作者

    ljitry 是这样吗?

    把那行代码改为Colone=datatable("draft_title",datatable.GetSheet("draft_to_draft").SetCurrentRow(1))还是有错
    注:表draft_to_draft也有draft_title这么一列
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2006-8-31 16:16:41 | 只看该作者
    本人建议你把要输入的数据全部放在Global表里,这样那程序就可以用啦!!其它Action的输入数据可以从Global表里用Excel语句引用过来!这样就便于数据维护了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
     楼主| 发表于 2006-8-31 16:21:40 | 只看该作者

    后来自己又搞了下,问题解决了

    先DataTable.GetSheet("Action2").SetCurrentRow(2)
    再DataTable("aa", "Action2")
    前面一句,我现在把他理解为像一个指针一样的东西 ,先指像第二行 ,然后在从第二行里面选则某列取出值出来

    试了,可以取出action2 第2行的aa这一列的值
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2006-8-31 16:23:36 | 只看该作者
    原帖由 walker1020 于 2006-8-31 15:13 发表
    很明显,黄色箭头标志的那行代码有问题。把这行代码改为 下面的代码就可以了:
        colone = DataTable("draft_title","draft_to_log")



    你这个跟前面那位的datatable("draft_title",dtlocalsheet)有什么区别呢?!!!!!sdlkfj8
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-23 02:56 , Processed in 0.087594 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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