注册 登录
编程论坛 ASP技术论坛

ADODB.Field (0x80020009)BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,

青青 发布于 2007-09-28 09:22, 2181 次点击

各位大哥哥,帮帮小妹啊,我做了好几天,都是出错,不知道错在那里,望大哥哥帮帮忙修改一下这个文件,谢谢啦

7 回复
#2
青青2007-09-28 09:25
只有本站会员才能查看附件,请 登录

就是这个文件了,再做不错来,就惨了,请大家帮帮忙啊
谢谢
#3
天涯听雨2007-09-28 09:56
有一个是“真”,或者当前的记录已被删除

很明显的错识,当前没有一条记录可以操作。

查看一下,是否是循环出错,或者,sql语句有没有问题……
#4
青青2007-09-28 09:56
怎么没有人帮我呀,在线等啊
#5
天涯听雨2007-09-28 10:14

<%
useid=trim(Request.QueryString("id")+"")+trim(Request("id")+"")
if len(useid)<1 then
Response.Redirect("cha_xun.htm")
end if

Set rs=Server.CreateObject("ADODB.Recordset")
strsql="select * from book5 where id="+useid
rs.Open strsql,conn
%>

___________________________________________________________________

红色部份不明白楼主接收传来的用户ID参数为怎么接收,很有错误

可能是写成这样吧:useid=trim(Request.QueryString("id")) 或者: useid=trim(request("id"))

但也不知道你是要相加还是进行连接

如果是相加:userid=Clng(trim(Request.QueryString("id")))+Clng(trim(request("id")))
如果是相连:userid=trim(Request.QueryString("id"))&trim(request("id")))


下面打开记录集写法也有一些错误,这样更快一些

set rs=Conn.exeCute("select top 1 * from book5 where id="&useid&"")

这里你就要判断一下,如果没有找到记录的情况:

if rs.bof and rs.eof then
response.write"<script language=JavaScript>alert('对不起,没有找到相关数据,请返回重新操作!');history.back(-1)</script>"
response.end
end if

你出现上述错识,就是因为是在没有找到记录的情况下,才报上面的错误,所需的操作要求一个当前的记录

[此贴子已经被作者于2007-9-28 10:15:02编辑过]

#6
madpbpl2007-09-28 10:19

碰到这种情况一般是因为表里的一条记录已经不存在的原因。
假设你的数据库链接用的是conn,再假设你的记录集为rs,
则调用你需要的结果前加上下面几句
if rs.eof and rs.bof then
response.write "数据记录不存在或已删除"
else
...... '这里再执行你的语句
end if
其实3楼已经给你答案了。

#7
piaoxue2007-09-28 10:19
换成这样写     strsql="select * from book5  where id="&amp;useid  试试
#8
piaoxue2007-09-28 10:22
你这句话什么意思 useid=trim(Request.QueryString("id")+"")+trim(Request("id")+"") 为什么相加呢? id 的数据类型对吗??  
1