标题: 关于datatable的列 [打印本页] 作者: workstudy 时间: 2008-5-22 08:50 标题: 关于datatable的列 在datatable中有两列A和B,都在同一sheet中,结构如下:
A B
1 some may
2 thing too
3 try catch
4 excep
5
想取得B列共有多少行,如何取?谢谢各位解达!
[ 本帖最后由 workstudy 于 2008-5-22 08:52 编辑 ]作者: 风过无息 时间: 2008-5-22 08:57
最直接的办法自己写个方法,判断下.作者: workstudy 时间: 2008-5-22 09:00
那怎么写?QTP没有自带的函数吗?作者: workstudy 时间: 2008-5-22 14:55
顶起来!作者: arthur766 时间: 2008-5-22 15:07
The following example uses the GetParameterCount method to find the total number of parameters (columns) in the run-time Data Table sheet (MySheet) and writes it to the report.
Reporter.ReportEvent 2, "There are " ¶mcount, "columns in the data sheet."作者: workstudy 时间: 2008-5-22 15:21
此函数得出的是runtime-table 里有多少列,没有得出我想看其中某列有多少行的结果啊作者: arthur766 时间: 2008-5-22 15:34
rowcount = DataTable.GetSheet("MySheet").GetRowCount作者: arthur766 时间: 2008-5-22 15:38
看错了,还是自己写个好了作者: zte_boy 时间: 2008-5-22 15:45
如果B的行数大于A,那直接datatable.GetSheet("Action1").GetRowCount就可以得出B的行数
如果B的行数小于A,那么:
Dim i ,Brow
Brow = 0
Arow= datatable.GetSheet("Action1").GetRowCount
For i = 1 to Arow
datatable.GetSheet("Action1").SetCurrentRow(i)
Bvalue = datatable.RawValue("B" , "Action1")
If Bvalue <> "" Then
Brow=Brow+1
elseif Bvalue = "" then
reporter.ReportEvent micDone , "B行数" , Brow
Exit for
End If
datatable.GetSheet("Action1").SetNextRow
Next作者: workstudy 时间: 2008-5-22 16:13
如果出现B行前两行有字符,第三行和第四行没有,而第五行又有字符,那就会漏掉啊!
要怎么判断呢?作者: zte_boy 时间: 2008-5-22 16:36
LZ自己应该多想想,其实稍微改下就好了
Dim i ,Brow
Brow = 0
Arow= datatable.GetSheet("Action1").GetRowCount
For i = 1 to Arow
datatable.GetSheet("Action1").SetCurrentRow(i)
Bvalue = datatable.RawValue("B" , "Action1")
If Bvalue <> "" Then
Brow=Brow+1
elseif Bvalue = "" then
'msgbox Brow
Brow=Brow
End If
datatable.GetSheet("Action1").SetNextRow
Next
reporter.ReportEvent micDone , "B行数" , Brow作者: workstudy 时间: 2008-5-22 17:05
非常感谢zte_boy的回复!
我在想如何中间的两行空数据也是测试数据呢?再这样想的话就没完了
哈哈,有点叫劲了。。。
datatable.GetSheet("Action1").SetNextRow 这句好像多余了,呵呵
[ 本帖最后由 workstudy 于 2008-5-22 17:07 编辑 ]作者: zte_boy 时间: 2008-5-22 17:07
中间两行是空行也没问题啊,这段代码也是可以实现的啊作者: workstudy 时间: 2008-5-22 17:12
恩,代码我已经试过了。
我是说中间两行的空内容假如也是要计算在行数内的,这样的话就没法算了吧,呵呵,因为B列
没有A列长,B列少于A列的行数按我说的那样也会计算在内。说明这个“需求”是有问题的吧作者: meetial 时间: 2008-7-16 10:47
'======================想读哪行就哪行,如果测出bug跟我留言
Dim i ,Brow
Brow = 0
Arow= datatable.GetSheet("Action1").GetRowCount
For i = 1 to Arow
datatable.GetSheet("Action1").SetCurrentRow(i)
Bvalue = datatable.RawValue("B" , "Action1")
if Bvalue <> "" and i<Arow then
' msgbox "Brow:"&Brow&"ROW:"&Arow&"i:"&i
Brow=i
Elseif Bvalue <> "" and i=Arow then
Brow=Arow
End If
datatable.GetSheet("Action1").SetNextRow
Next
msgbox "B行数:" &Brow