51Testing软件测试论坛

标题: QTP的一个很奇怪的问题?? [打印本页]

作者: Horus_Ra    时间: 2006-2-21 18:11
标题: QTP的一个很奇怪的问题??
把附件里的Excel文件放到C盘下,然后把下面这段代码复制QTP中,在Global表中的A列里随便打些字然后删掉就能运行了。
这是一个普通的Excel文件,第10行有一个数字,其余都是字母。
这段代码是将刚才那个Excel中的a列里的所有内容输入到DataTable里去,但是你会发现,除了第10行的数字以外,其余都能输进去……不知道为什么,就是第10行的数字输不进去??

根据我试验下来,在第10行以前的纯数字可以被输入,但第10行以后却不行??
而且第10行以前如果有数字的话,就可以被输入,但之前没有数字就不行了??

为什么???


  1. Set conn = createobject("ADODB.Connection")
  2. conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;Data Source=C:\123.xls;Extended Properties='Excel 8.0;hdr=yes'"
  3. Set input = createobject("ADODB.Recordset")
  4. input.open "select * from [Sheet1$]",conn,2,2
  5. p1 = 1
  6. DataTable.GetSheet("Global").SetCurrentRow(1)
  7. Do While not input.eof
  8.         DataTable("A", dtGlobalSheet) = "'" & input("a")
  9.         p1 = p1 + 1
  10.         DataTable.GetSheet("Global").SetCurrentRow(p1)
  11.         input.MoveNext
  12. Loop
  13. input.close
  14. Set input=nothing
  15. Set conn=nothing
复制代码

[ 本帖最后由 Horus_Ra 于 2006-2-22 13:45 编辑 ]
作者: 海龙    时间: 2006-2-22 00:33
DataTable.Import ("C:\123.xls")
作者: Horus_Ra    时间: 2006-2-22 09:15
导入吗??
但我的DataTable中还有其他内容呢,导入后就没了……

顺便问一下,
input.close
Set input=nothing
Set conn=nothing
这三句话是干吗的?好像不加也没什么关系?

[ 本帖最后由 Horus_Ra 于 2006-2-22 09:56 编辑 ]
作者: BiSheng    时间: 2006-2-22 11:18
标题: 我也出现过类似的情况
我用的数据库接口是ODBC,也出现过导入了,但没有任何内容,最后发现还是语句有问题。下面是我同事写的代码,可以独立运行(只要你建立相应的表就行了,数据库SQL Server,文件格式.asp,):
<script language="VBScript">
Server_name=inputbox("请输入数据库服务器地址:")' 访问的数据库
user_name=inputbox("请输入用户名:")                                                          '向这个帐号添加节目
n=inputbox("请输入添加节目个数:")                                                                                   '添加多少个节目
'---------------------------------------------------------------------------------------------------------
call add_program_and_add_fav(Server_name,user_name,n)
Sub add_program_and_add_fav(Server_name,user_name,n)
   Set con=Createobject("adodb.connection")
   con.open("Description=MOD;"&_
                         "Driver={SQL Server};"&_
                                                 "Server="&Server_name&";"&_
                                                 "uid=sa;"&_
                                                 "pwd=11111;"&_
                                                 "App=Quicktestpro;"&_
                                                 "WSID=IBM;"&_
                                                 "Database=MOD31")
   Set record1=Createobject("adodb.recordset")
   Set record2=Createobject("adodb.recordset")
   Set record3=Createobject("adodb.recordset")
   For i=1 to n
   sql1="insert into m3_program(p_name,p_adduser,p_commend,p_imageid,p_class,p_check,p_groupmask,"&_
             "p_addtime,p_readcount,p_iskind,p_remarkcount,p_remarkscore,p_duration,p_size_high,p_mediakind,p_size_low,p_size,p_course_id)"&_
           "values('"&user_name&""&i&"','"&user_name&"',0,11,1,2,-1,"&_
                   "'"&now&"',0,1,0,0,0,0,0,0,0,0)"
  sql11="select * from m3_program where p_name='"&user_name&""&i&"'"
  sql2="select * from m3_catalog where c_name='"&user_name&"'"
  sql_fav1="select * from m3_user where u_mask='"&user_name&"'"
   con.execute(sql1)
   record1.open sql11,con
   record2.open sql2,con
   record3.open sql_fav1,con
   sql3="insert into m3_cataloglist(cl_program_id,cl_catalog_id,cl_main_catalog_id) values('"&record1("p_id")&"','"&record2("c_id")&"',10)"
   sql_fav2="insert into m3_programmark(pm_user_id,pm_program_id,pm_addtime)values('"&record3("u_id")&"','"&record1("p_id")&"','"&now&"')"
   con.execute(sql3)   
   con.execute(sql_fav2)
    record1.close
    record2.close
        record3.close
         Next
   Set record1=nothing
   Set record2=nothing
   Set record3=nothing
   con.close
   Set con=nothing
   msgbox("添加成功")
End Sub
</script>


楼主问的close和nothing:是结束并清空存在recordset中的信息。具体的你可以看一下ASP的书籍,里面有很详细的解释。
作者: BiSheng    时间: 2006-2-22 11:50
标题: nothing
说错了:第一个set input =nothing 是清空recordset中的信息;
             最后一个set conn=nothing 是对象断开与数据库链接;
作者: Horus_Ra    时间: 2006-2-22 13:37
请问……你说是语句有问题,不知道具体是什么语句有什么问题?
我的代码就这么几行,怎么看都看不出问题啊?
而且,如果是第10行以上的话,可以被输入,如果是字母的话,也可以被输入,但偏偏就是第10行一下的纯数字不能被输入,那是为什么??

另外问一下,如果最后不set nothing的话,会有什么后果?

[ 本帖最后由 Horus_Ra 于 2006-2-22 13:46 编辑 ]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2