51Testing软件测试论坛
标题:
请问QTP如何判断下一个DataTable里空的?
[打印本页]
作者:
Horus_Ra
时间:
2006-2-15 11:09
标题:
请问QTP如何判断下一个DataTable里空的?
注意,我是横着取的,也就是说,先取A列的值,再取B列的值,以此类推。
我做了个循环,会一直往下一列取数据。
由于我不确定数据有多少,所以要做个判断,如果下一列是空的话,就退出循环。
我用的是这个循环:
Do While b <> ""
……
b = DataTable(x, dtGlobalSheet)
其中,“DataTable(x, dtGlobalSheet)”就是取下一列数据,如果b不等于空的话就一直循环下去,如果等于空就退出While循环。理论上应该没错。
但现在的问题是,一取到空列时,就直接报错,根本来不及做判断。
怎么办呀??
作者:
sz_lg
时间:
2006-2-15 11:59
没有看到过这种用法
作者:
Horus_Ra
时间:
2006-2-15 12:25
很多情况会用到这种情况啊……
比如一个多选框,要选择多个内容,而且选择的内容不固定,选择的数量也不固定,你怎么弄??
你只能每列输入一个,而不是每行输入一个……
如果每行输入一个的话,这个脚本只能执行一次……
作者:
每天喝水
时间:
2006-2-15 13:08
如果空会报错的话,那就在结束列的单元格里用个特定字符表示空或结束。还有,在有用列的后面的一个空的表示结束的列名最好改名。
作者:
Horus_Ra
时间:
2006-2-15 13:22
我现在在最后一列里打上“End”标示这一行结束,然后代码改成Do While b <> "End",那么碰到End就能结束了……
我是不太喜欢这个方法,不过看起来也只有这样了……
作者:
mstiunicon
时间:
2006-2-16 15:41
1.dataTable没有提供对列的操作,没有实现如getNextCols这样的方法。
2.dataTable中要取某一列的值,必须提供一个列名,就像数据库一样
3.一个解决方法:将列名用数字按顺序排列,如第一列:data1,第2列:data2......第n列:datan....
dim b,i
for i=1 to n
b=dataTable("data"&i,dtLocalSheet)
if b="" Then
Exit For
end if
Next
作者:
Horus_Ra
时间:
2006-2-17 10:49
楼上的,你想的也太简单了……
1,DataTable里一共可以到IV列,难道你一个个换名字??显然不可能……
2,而且你根本不知道参数有多少个,所以这个N不好办吧??
3,如果第一行有5个参数,第二行有10个参数,那你怎么办??
4, “b=dataTable("data"&i,dtLocalSheet)
if b="" Then”
如果如果b是空的话,b=dataTable("data"&i,dtLocalSheet)这句话就会报错,根本不会执行到下面的if语句……如果这段话能行的话,我就不用发这个帖子了~~
我就用他本来的名字(A、B……AA、AB……IU、IV)也可以做,不用自己一个个改列名,写一段代码就行了(以后我贴上来)
另外,我知道怎么取空了,现在不用结束符就能自动判断下一列是不是空值了,哈哈哈~~~~
[
本帖最后由 Horus_Ra 于 2006-2-17 10:55 编辑
]
作者:
mstiunicon
时间:
2006-2-17 11:02
我知道怎么取空了,现在不用结束符就能自动判断下一列是不是空值了,哈哈哈~~~~
这样做不厚道啊,说明一下撒
作者:
Horus_Ra
时间:
2006-2-17 11:06
其实很简单,代码不变,仍然用Do While b <> ""或者if b="" Then,只要在DataTable里改一下就行了,你把DataTable拉到最右边,选中IU和IV列,然后在IV列上点右键,选择Edit->Fill Right,就行了,哈哈哈~~
[
本帖最后由 Horus_Ra 于 2006-2-17 11:09 编辑
]
作者:
mstiunicon
时间:
2006-2-17 11:20
厄地神呀,这个技巧有点意思。收藏先
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2