刷身份证能看到案底吗:[求助]ASP报错:ADODB.Recordset (0x800A0BCD)

来源:百度文库 编辑:高考问答 时间:2024/04/29 18:54:48
[求助]ASP报错:ADODB.Recordset (0x800A0BCD)

功能是写一个编辑功能的页面,修改新闻的分类,参数传递的是分类的编码(cata_id),现在页面上显示出原来的分类名称,然后根据用户的修改更新数据库中的记录。

代码是这样的:
<%
dim cata_id,lng_cata_id,action,sql,rsCata,new_cata_name,new_cata_update
cata_id = request.Querystring("cata_id")
lng_cata_id = clng(cata_id)
action = trim(request.Form("action"))
new_cata_name = trim(request.form("cataname"))
new_cata_update = formatdatetime(now(),vbshortdate)

sql = "select * from cata_news where cata_id =" &lng_cata_id & ""
set rsCata = server.CreateObject("adodb.recordset")
rsCata.open sql,conn,1,3

if rsCata.bof and rsCata.eof then
response.Write "<script language=JavaScript>alert('分类不存在!') </script>"
end if
if action = "edit" then
if new_cata_name = "" then
response.Write "<script language=JavaScript>alert('分类名称不能为空!') </script>"
else
rsCata("cata_name") = new_cata_name
rsCata("cata_update") = new_cata_update
rsCata.update
conn.execute "update cata_news set cata_name ='" &new_cata_name& "',cata_update = '" &new_cata_update& "' where cata_id =" &lng_cata_id & ""
response.Redirect("newscata.asp")
end if
end if
%>

红色的那行开始报错:
错误类型:
ADODB.Recordset (0x800A0BCD)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/jxmobile/admin/newscata_edit.asp, 第 19 行

这样的错误应该是说数据集为空吧,问题是我这个页面在加载的时候就必须通过传递的cata_id获取cata_name然后显示在页面上,只是用户修改了以后点下确定按钮以后为什么就会报“没有当前记录”的错误呢?
代码里面我并没有用movenext之类的语句,因为sql语句的执行结果正常情况下rsCata肯定只有一条记录也就是我要修改的那条记录的啊。我写过测试页面了,查询是有结果的而且是正常的一条记录。难道说是我的rsCata.open后面的参数导致指针自动往下移动了?很烦恼啊,请问这个问题要怎么解决呢?

先谢谢了!
谢谢回答
我试过了,还是不行……如果完全不判断rsCata的bof和eof的话会报一个adodb.fields的错误……
而且我把rsCata.update后面的那堆conn.execute删掉了……问题仍然存在
==================================================================================================

OK,问题解决了!因为加载一次提交一次页面实际上要执行两次,所以第二次提交的时候相当于没有了cata_id的参数了
页面第二次执行的时候仍然需要这个参数,所以在form里面要把它记录下来

<input name="cataname" type="text" value="<%=rsCata("cata_name")%>">
后面加上<input name="cata_id" type="hidden" value="<%=cata_id%>">
再提交的时候就有参数传递了!

算是自己小小的实践吧……

如果你确定了只有一条记录就不要那么麻烦了啊

使用:if not rsCata.eof then

就行了啊,没有必要再检测rsCata.bof了吧

还有更新数据时,很罗嗦哦,不要生气