51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2747|回复: 4
打印 上一主题 下一主题

往表中相应栏位的参数插入值时遇到的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-9-28 18:05:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
需要把源表中相应栏位的值取出来插入到目标表的相应栏位下,我在运行如下脚本时,系统没有插入值且没有任何提示信息,现在把脚本贴出来,麻烦大家一起看下:
详细说明此脚本欲完成功能:
源表:s0205new.xls
目标表:s0205valid.xls
说明:需要将源表中参数为 s0205new_id 的值依次将读出来,并依次插入到目标表中参数为s0205query_id 下
插入方式:源表中第i行值插入到目标表第i行
测试情况说明:
1、目标表的值没有改变
2、pause("the current s02001's value is "&s020011),此提示信息能提示
3、用红色标识的地方没有任何提示
备注说明:
1、目标表、源表均在同一目录下,且所涉及到的栏位s0205new_id、s0205query_id均已参数化
2、在测试时将ddt_set_val_by_row(dtable,table_Row,"s0205query_id",s020011) 中的table_Row、s020011均用常量代替测试过,但仍没有插入成功。


dtable="s0205valid.xls"; #以可写方式打开目标表
rc = ddt_open(dtable, DDT_MODE_READWRITE);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table."&dtable);
       
table = "s0205new.xls"; #以只读方式打开源表
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table."&table);

ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);  
        s020011=ddt_val(table,"s0205new_id");#定义s020011获取源表当前参数s0205new_id的值
        pause("the current s02001's value is "&s020011);#显示当前参数的值,测试用
        rc1=ddt_set_val_by_row(dtable,table_Row,"s0205query_id",s020011);#将获取的值插入到目标表       
                     if(rc1!=E_OK && rc1!=E_FILE_OPEN )
                     pause("cannot insert the  value to  "&dtable);
       
                     ddt_save(dtable);#保存目标表
       
}
ddt_close(table);#关闭源表
ddt_close(dtable);#关闭目标表
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-9-29 11:35:58 | 只看该作者
我试了试你的代码,没有问题,可以插入成功,就是插入的列不对,还在琢磨, 你可以在你的代码中,将获取的值插入到目标表中的下面加上pause("rc1 ===== "&rc1),用来调试,根据rc的值看是否成功.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-9-29 11:55:01 | 只看该作者
折腾了半天,终于明白了,如果ddt_set_val_by_row(table,table_Row,"id",s020011)函数里的第三个参数id在目标表中是在第一列,则插入的信息就显示在第一列,如果目标表中是个空表,则就默认去L列了
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-9-29 13:56:25 | 只看该作者
这个是能插入的,因为能够通过pause来显示插入的值,但是还是下面两个问题还有疑问:
1、若用ddt_set_val_by_row()在第3行插入,用ddt_val_by_row()来获取插入的值,若获取的是第3行的值,则测试结果中则显示为空,没有显示插入的值,若获取的是第1行的值,才能获取所插入的值,不知道piao_604有没有发现此问题。
rc1=ddt_set_val_by_row(dtable,3,"id","1111");
if(rc1=E_OK && rc1=E_FILE_OPEN )
  pause("ok  "&dtable);
ddt_save(dtable);
s020012=ddt_val_by_row(dtable,3,"id");
pause("the value is "&s020012);
2、通过这个例子能插入值,主要的依据是因为通过pause()能显示插入的值,但是在文件中打开目标表,表中的内容仍没有改变,没有显示被插入的值。我在想是不是需要将表导入才能生效,但是关于ddt_的函数中没有找到能够进行导入的方法,不知道是不是自己思路有误。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-9-29 14:40:07 | 只看该作者
找到第1个问题的原因了,用ddt_set_val_by_row()插入时,只能往表中连续的行进行插入,中间不能有空行,否则就会有问题,上页面的例子中没有获取第3行的值,是因为表中第2行是空的,里面只有第1行的值,所以会出现此问题。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-7 23:36 , Processed in 0.076039 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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