在点击产品进入详细页面时,显示BOF或EOF中有一个是“真”,或者当前的记录已被删除,在线等大家帮忙!谢谢-Web开发/ASP

2014 年 5 月 19 日3530

pid=session("pid") 是产品页面 product.asp,product_view.asp 是产品详细页面,点击产品进入详细页面时,总提示
错误类型:
ADODB.Field (0x80020009)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。 请问这是什么原因呢????
表格product 字段:product_ID protype product_number product_category product_name
表格type 字段:productID producttype entype
我是用session 传值,可能用的........,我想问用request怎么传值呢,希望大家帮忙,谢谢。
--------------------------------------------------------------------------------------------------------------
product_view.asp
<!--#include file="inc/conn.asp" -->
<%
pid=session("pid")
set rs=server.createobject("adodb.recordset")
sql="select * from product where product_ID="&pid
rs.open sql,conn,1,3
abc=rs("product_ID")
%>
<%
set rss=server.createobject("adodb.recordset")
sql1="select * from type where productID="&rs("product_ID")&" order by productID desc"
rss.open sql1,conn,3,3
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title><%=rs("product_name")%></title>
</head>
<body>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<h1><%=rs("product_name")%></h1>
<img src="/pro_image/<%=rs("product_piclarger")%>">
<a href="products.asp?ztype=<%=rss("productID")%>"> <%=rss("producttype")%></a>
</td>
</tr>
</table>
</body>
</html>

------回答---------

------其他回答(3分)---------

首先你确定session获得的那个变pid的数值是多少,总response.write pid,可以看到。
其次,数值传递过来后,检查查询语句,特别是数据类型是否匹配,语法有无错误。
第三,可以不用session传递值,可以用超链接后带参数传递,例如外product.asp中有查看详细页面的链接,可以写,<a href="product_view.asp?pid=<%=rs("id")"><%=rs("name ")%></a>,在product_view.asp中,用request 获得传递来的值,pid=request("pid"),这样就可以不用session了!

------其他回答(4分)---------

把 session("pid") 打印出来看一下吧,确认是否有值

------其他回答(44分)---------

VBScript code








set rs=server.createobject("adodb.recordset")



sql="select * from product where product_ID="&[color=#FF0000]pid[/color]



rs.open sql,conn,1,3



abc=rs("product_ID")





改为

VBScript code








set rs=server.createobject("adodb.recordset")



sql="select * from product where product_ID="&[color=#FF0000]cstr(pid)[/color]



rs.open sql,conn,1,3



abc=rs("product_ID")





感觉这个session传值是有问题的,你最好response.write pid一下

------其他回答(4分)---------

这个报错通常是因为值没有传过来,所以数据库内没有这个数据
建议你每次输出前都可以加上
if rs.recordcount=0 then
response.write('暂无数据!')
response.end()
end if
这种。

------其他回答(4分)---------

我想這樣子改會好一點喔
<!--#include file="inc/conn.asp" -->
<%
pid=session("pid")
set rs=server.createobject("adodb.recordset")
sql="select a.*,b.* from product a join type b on a.product_id = b.product.id where product_ID="&pid
rs.open sql,conn,1,3
if no rs.eof then
product_id = rs("product_id")
product_piclarger = rs("product_piclarger")
product_type = rs("product_type")
product_name = rs("product_name")
end if
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title><%=product_name%></title>
</head>
<body>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<h1><%=product_name%></h1>
<img src="/pro_image/<%=product_piclarger%>">
<a href="products.asp?ztype=<%=productID%>"> <%=producttype%></a>
</td>
</tr>
</table>
</body>
</html>

------其他回答(3分)---------

毕业设计吧?俺也遇到这个问题了,囧囧有神。不过我现在也不知道是怎么回事。

0 0