asp网页中ADODB.Field错误 '80020009' 如何解决? 20

运行default.asp首页时,网页中间错误代码提示如下:ADODB.Field错误'80020009'BOF或EOP中有一个是“真”,或者当前的记录已被删除,所需的操... 运行default.asp首页时,网页中间错误代码提示如下:
ADODB.Field错误 '80020009'

BOF 或EOP 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

/default.asp,行 0

点击打开以上错误段的超链接时,新窗口打开显示错误代码如下:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21'

ODBC 驱动程序不支持所需的属性。

/openarticle.asp,行 17

我的首页default.asp文件中相关程序段是这样写的:

<%set rs=server.createobject("adodb.recordset")
sql ="select * from article where hits>=30 order by dateandtime desc"
rs.open sql,conn,1,1%>
<td width="337" height="79" class="p1"><a href="openarticle.asp?id=<%=rs("newsid")%>" target="_blank"> <%=RmHtml(left(rs("content"),100))%> ……</A><%set rs=nothing%></td>

而openarticle.asp文件里的内容相关程序段如下:
<%response.buffer=false
dim sql
dim path
dim filename
dim rs
dim listname
dim articleid

articleid=request("id")
path=request("path")
filename=request("filename")
set rs=server.createobject("adodb.recordset")
sql="update article set hits=hits+1 where newsID="&articleid
rs.open sql,conn,1,1
rs.close
conn.close
response.redirect "go.asp?id="&articleid
%>

请高手们帮我看看,是哪一个程序出错了,怎么改啊? 成功奖分啊~
把楼下说的那行注释起来也不行啊~
展开
 我来答
sxfrz
2007-08-01 · TA获得超过671个赞
知道小有建树答主
回答量:978
采纳率:0%
帮助的人:0
展开全部
对于default.asp文件来说:
错误出在rs.open sql,conn,1,1之后,少一个判断该记录是否存在的语句,如果存在,才能够读取rs("newsid"),如果不存在而你又没有进行必要的判断,那么就会出现BOF 或EOP 中有一个是“真”,或者当前的记录已被删除之类的错误。
修改后的语句应该是这样子的:
<%
set rs=server.createobject("adodb.recordset")
sql ="select * from article where hits>=30 order by dateandtime desc"
rs.open sql,conn,1,1
'先进行如下的判断,判断该记录在数据库中是否存在,如果存在才能读取rs("newsid")这样的值,否则就会出现错误
if not rs.eof and not rs.bof then
%>
<td width="337" height="79" class="p1"><a href="openarticle.asp?id=<%=rs("newsid")%>" target="_blank"> <%=RmHtml(left(rs("content"),100))%> ……</A></td>

<%
end if
set rs=nothing
%>

而对于openarticle.asp这个文件来说出现错误的语句是:rs.open sql,conn,1,1
这一句有两个参数,第一个参数是CursorType,第二个参数是LockType
CusorType有四个值,这里取1也是可以的,没有问题。而LockType这里取值取错了,可以取2,3,但是就是不能取1。至于CursorType与LockType的意义,你可以参看微软的ado帮助,我这里就不多做解释了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友33f5846ce
2007-07-23 · TA获得超过189个赞
知道小有建树答主
回答量:481
采纳率:0%
帮助的人:406万
展开全部
BOF 或EOP 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

这句话提示,查询结果为空,做一下有无数据的判断吧,
--------------------------------

sql ="select * from article where hits>=30 order by dateandtime desc"
rs.open sql,conn,1,1
在这里,判断下有没有数据
--------------------------------------------

rs.open sql,conn,1,1
rs.close

把rs.close 这一行先注释起来试试,用完了再关闭
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式