51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3972|回复: 12
打印 上一主题 下一主题

[原创] 判断输出值是否为空的语句怎样写?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-6-8 08:26:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如要判断数据库中某个数据是否为空,我首先把这个数据用输出值的方式输出到QTP左下方那个表格的某个字段中了。然后想判断这个值是否为空,如果为空则调用另一个测试的action,如果不为空则继续运行。我不知道判断为空的语句怎样写,我写成字段名=NULL或是isNull(字段名)都不行。请高手指教。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-6-8 08:37:44 | 只看该作者
isnull为什么不行呢,楼主把脚本贴出来看看.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-6-8 08:46:12 | 只看该作者

脚本如下盼请帮忙

DbTable("DbTable_2").Output CheckPoint("DbTable_2")'取出数据库中的数值到ZZJGDM字段中

ZZJGDM=DataTable("ZZJGDM", dtGlobalSheet)

        If isNull(ZZJGDM) Then

        RunAction "Action1 [companyadd]", oneIteration
End If
....这里是另一段代码A

在实际的数据库中没有这个值的时候,应该是调用companyadd的,可是不管怎么样,都是只执行代码A。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-6-8 08:49:09 | 只看该作者

我的另一种写法也不成。语法没有报错。

If (DbTable("DbTable_2").OutputCheckPoint("DbTable_2")=null) Then。。。这是我另一种写法,语法没问题但是还是不行。就是不走companadd,我想是不是表示数据不存在的方法不是NULL呢?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-6-8 08:59:51 | 只看该作者

另外如何判断输出值或者检查点失败呢

如当输出值失败和成功时走不同的流程,我先插入输出值DbTable("DbTable_2").OutputCheckPoint("DbTable_2"),当失败时也就是没有任何值时我如何写语句进行判断呢?DbTable("DbTable_2").OutputCheckPoint("DbTable_2")=fail?显示是不对的,那该如何写呢
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-6-8 09:00:41 | 只看该作者
那""这个呢???????????????????
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-6-8 09:13:19 | 只看该作者
楼主可以把DEBUG看一下ZZJGDM的值到底多少.

另外有个疑问,为什么要output到datatable,然后再取出来比较,直接取出来判断为空不是更合适?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-6-8 09:24:51 | 只看该作者
支持楼上的 用最简单的办法可以节省很多的哦~~~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-6-8 10:02:29 | 只看该作者
原帖由 chbanney 于 2007-6-8 08:59 发表
如当输出值失败和成功时走不同的流程,我先插入输出值DbTable("DbTable_2").OutputCheckPoint("DbTable_2"),当失败时也就是没有任何值时我如何写语句进行判断呢?DbTable("DbTable_2").OutputCheckPoint("DbTa ...


按照你说的情况,判断这个输出值的时候应该选择适用于字符串的函数,比如字符串比较函数StrComp或者长度Len
可以写成:
If StrComp(MyStr, "", 1) = 0 Then ... End If,其中MyStr是待判断字符串变量,""表示空字符串。StrComp返回结果为0表示该变量为一个空字符串;
或者:
If Len(MyStr) <= 0 Then... End If,当字符串变量长度不大于0时表示该变量为空字符串。

你遇到的问题出在对IsNull方法的理解上面。IsNull是一个VBScript自带的方法,用于判断一个变量是否为Null。帮助原文对Null的解释是:
The Null value indicates that the variable contains no valid data. Null is not the same as Empty, which indicates that a variable has not yet been initialized. It is also not the same as a zero-length string (""), which is sometimes referred to as a null string.
常见的变量为Null的情况有变量等于Null或者返回对象不存在等等。
你脚本中的ZZJGDM=DataTable("ZZJGDM", dtGlobalSheet)无论返回什么值,ZZJGDM都将是一个字符串,因为这是DataTable.Value属性决定的。所以即使ZZJGDM是个空字符串,IsNull也是False。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-6-8 10:19:53 | 只看该作者

太感谢楼上的大哥了用你的方法解决了

sdlkfj2 谢谢,现在没问题可以过了。我还想知道如何判断一个检查点是否通过的语句。望赐教。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-6-8 10:34:08 | 只看该作者
Object.Check方法在录制完脚本后生成的形式是:Object.Check CheckPoint(***)
其实Check方法是有返回值的,上述语句可以改写成
If Object.Check(CheckPoint(***)) Then ... End If
这样就可以在程序运行过程中判断CheckPoint是否通过了。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-6-8 11:35:58 | 只看该作者

非常感谢~

非常感谢~~
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-6-8 16:03:56 | 只看该作者
受教了,谢谢
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 10:58 , Processed in 0.081505 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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