当前位置:编程学习 > asp >>

asp vb脚本错误,提示缺少对象!!求救!!

<!--#include file="conn.asp"-->
<%
if request("do")="submit" then
ss = request.Form("tx")
if request.Form("tx")="" then response.End()
else
set rs=server.createobject("adodb.recordset")
rs.open "select * from news where title like \\'%ss%\\'",conn,1,2
if rs.eof or rs.bof then

response.Write("抱歉,未找到记录")
response.End()
end if
end if
rs.close
set rs=nothing
conn.close
set conn=nothing
%>

提示如下
错误类型:

Microsoft VBScript 运行时错误 (0x800A01A8)
缺少对象: 'rs'

实在不知道该怎么搞了,头都大了,求救!!!
答案:我很负责的告诉你即使你用一楼的方法修改了仍然会出问题!
因为对于你说的这个问题:
Microsoft VBScript 运行时错误 (0x800A01A8)
缺少对象: 'rs'
不是rs.open "select * from news where title like \\'%ss%\\'",conn,1,2
这一句引起的,但是仍然要按一楼的方法修改为:
rs.open "select * from news where title like '%" & ss & "%'",conn,1,2

(这里如果出错只会提示是语法错误或查询表达式错误,而不是提示缺少对象!)

你说的错误是由于你的条件语句引起的,这是一个逻辑错误;

你的第一个条件语句if request("do")="submit" then ,我设为a条件,
第二个条件语句if request.Form("tx")="" then response.End()
我设为b条件;

我先说第一种情况:
如果a条件满足的话就会执行:
ss = request.Form("tx")
if request.Form("tx")="" then response.End() ,
然后如果b条件满足,也就是request.Form("tx")等于空,那么
response.End() 整个程序就结束了,下面的程序也都不会执行了,
所以就没有问题;

第二种情况:
如果a条件满足了,执行:
ss = request.Form("tx")
if request.Form("tx")="" then response.End(),
但是b条件没有满足也就是request.Form("tx")不为空,那么下面的‘else’到第二个‘end if’的语句会因为a条件的满足而不会执行;
主要也就是关键的这一句set rs=server.createobject("adodb.recordset")没有执行,但是你的第二个“end if”却在
rs.close
set rs=nothing
之前就结束了所以
rs.close
set rs=nothing
这两句都会执行,但是你前面并没有执行set rs=server.createobject("adodb.recordset")来创建一个数据集,所以执行rs.close 的时候就会提示你
“缺少对象: 'rs' ” 了

所以你的第二个“end if”应该出现在
rs.close
set rs=nothing
之后;

还有就是
rs.open "select * from news where title like \\'%ss%\\'",conn,1,2
改为
rs.open "select * from news where title like '%" & ss & "%'",conn,1,2


希望你看懂了


所以二楼的你说“最佳答案已产生! ”有点为时过早!
三楼你其实还没来晚,呵呵!
我的答案也不一定是最佳的,但希望能帮上忙!

大家都新年快乐!牛起来!

上一个:几道VB的题,希望高手来帮做做!
下一个:VB:做一个抽奖机(七个数的)。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,