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

BOF 或 EOF 中有一个是“真”不太懂这句话,总调试不对.

solution 发布于 2007-08-26 21:18, 1395 次点击

<%
dim conn,connstr
set conn = server.createobject("adodb.connection")
conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=NL;UID=sa;PWD=123456;DATABASE=data"
dim rs,sql
set rs=server.CreateObject("ADODB.Recordset")
sql="select 产品名称,单位数量,单价,库存量,订购量 from 产品"
rs.open sql,conn,1,1
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>连接数据表并显示数据表信息</title>
<style type="text/css">
<!--
.STYLE2 {font-size: 18px}
.STYLE3 {color: #FF0000}
-->
</style>
</head>

<body>
<p align="center"><span class="STYLE2">显示表“产品”信息</span></p>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="2" bgcolor="#FFCC66">
<tr>
<td align="center" bgcolor="#FFFFFF"><span class="STYLE3">产品名称</span></td>
<td align="center" bgcolor="#FFFFFF"><span class="STYLE3">单位数量</span></td>
<td align="center" bgcolor="#FFFFFF"><span class="STYLE3">单价</span></td>
<td align="center" bgcolor="#FFFFFF"><span class="STYLE3">库存量</span></td>
<td align="center" bgcolor="#FFFFFF"><span class="STYLE3">订购量</span></td>
</tr>
<%if not rs.eof then
for i=1 to 8%>
<tr>
<td align="center" bgcolor="#FFFFFF"><%=rs("产品名称")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("单位数量")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("单价")%>元</td>
<td align="center" bgcolor="#FFFFFF"><%=rs("库存量")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("订购量")%></td>
</tr>
<%rs.movenext
next
end if%>
</table>
</body>
</html>


错误显示如下:
错误类型:
ADODB.Field (0x80020009)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/second/showinformation.asp


浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

网页:
GET /second/showinformation.asp

时间:
2005年8月26日, 21:15:08

18 回复
#2
xiapi2007-08-27 08:17

出现这种情况一般是数据库里没有记录造成的,不知道你的是不是

#3
hmhz2007-08-27 08:18
if not(rs.eof or rs.bof) then
#4
ayue2222007-08-27 09:29
正解 .. 这句话说明查询记录为空,所以输出前最好进行一下判断..if not(rs.eof or rs.bof) then
#5
zhy3282007-08-27 11:00
if not(rs.eof or rs.bof) then
我也不知道这句话是什么意思呢?
#6
slfyeye2007-08-27 12:06
以下是引用zhy328在2007-8-27 11:00:26的发言:
if not(rs.eof or rs.bof) then
我也不知道这句话是什么意思呢?

上面那句等于 If Not rs.eof and Not rs.bof
意思是既不在第一条记录之前,也不在最后一条之后。表明有记录。

[此贴子已经被作者于2007-8-27 12:07:39编辑过]

#7
solution2007-08-27 13:26
表里有记录,四条.
#8
qhscqb2007-08-27 14:36
<% for i=1 to 8
if rs.eof then
exit for
end if

%>
<tr>
<td align="center" bgcolor="#FFFFFF"><%=rs("产品名称")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("单位数量")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("单价")%>元</td>
<td align="center" bgcolor="#FFFFFF"><%=rs("库存量")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("订购量")%></td>
</tr>
<%rs.movenext
next%>
#9
islet2007-08-27 14:43
sql="select 产品名称,单位数量,单价,库存量,订购量 from 产品"
改成 sql="select top 8 产品名称,单位数量,单价,库存量,订购量 from 产品"




<%if not rs.eof then
for i=1 to 8%>
<tr>
<td align="center" bgcolor="#FFFFFF"><%=rs("产品名称")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("单位数量")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("单价")%>元</td>
<td align="center" bgcolor="#FFFFFF"><%=rs("库存量")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("订购量")%></td>
</tr>
<%rs.movenext
next
end if%>
改成
<%do while not rs.eof%>
<tr>
<td align="center" bgcolor="#FFFFFF"><%=rs("产品名称")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("单位数量")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("单价")%>元</td>
<td align="center" bgcolor="#FFFFFF"><%=rs("库存量")%></td>
<td align="center" bgcolor="#FFFFFF"><%=rs("订购量")%></td>
</tr>
<%rs.movenext
loop
rs.close%>
#10
qhscqb2007-08-27 14:44

效果一样,方式不一样而已!

#11
solution2007-08-27 19:14

谢谢了,学了不少.
又一问题来麻烦大家了.不知道错在哪?说是那段错误,可检查了,没看出来哪错.
<!--#include file="../conn/conn.asp"-->
<%
set rs=createobject("adodb.recordset")
sql="select 类别ID,单位数量,单价,库存量,订购量 from chanpin"
rs.open sql,conn,1,1
pagecounter=15
%>
<html>
<head>
<title>删除表记录</title>
</head>
<body>
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="2" bgcolor="#ffcc66">
<form name="form1" method="post" action="delete.asp">
<tr>
<td align="center" bgcolor="#ffffff"><span class="style3">产品名称</span></td>
<td align="center" bgcolor="#ffffff"><span class="style3">单位数量</span></td>
<td align="center" bgcolor="#ffffff"><span class="style3">单价</span></td>
<td align="center" bgcolor="#ffffff"><span class="style3">库存量</span></td>
<td align="center" bgcolor="#ffffff"><span class="style3">订购量</span></td>
<td align="center" bgcolor="#ffffff"><span class="style3">修改信息</span></td>
<td align="center" bgcolor="#ffffff"><input type="submit" name="Submit" value="删除"></td>
</tr>
<%
pageno=request.QueryString("pageno")
rs.pagesize=pagecounter
page=rs.pagecount
if pageno="" or pageno<1 then
pageno=1
end if
if rs.eof or rs.bof then
response.write"<font color=""ff0000"">此数据表没有记录!</font>"
else
rs.absolutepage=Cint(pageno)
position=rs.PageSize*pageno
pagebegin=position-rs.PageSize+1
if position<rs.RecordCount then
pagend=postion
else
pagend=rs.recordcount
end if
do while not.eof and c<=rs.pagesize
e=e+1
%>
<tr>
<td align="center" bgcolor="#FFFFFF" class="font2"><%=rs("产品名称")%></td>
<td align="center" bgcolor="#FFFFFF" class="font2"><%=rs("单位数量")%></td>
<td align="center" bgcolor="#FFFFFF" class="font2"><%=rs("单价")%></td>
<td align="center" bgcolor="#FFFFFF" class="font2"><%=rs("库存量")%></td>
<td align="center" bgcolor="#FFFFFF" class="font2"><%=rs("订购量")%></td>
<td align="center" bgcolor="#FFFFFF" class="font2">
<a href="modinfo.asp?MID=<%=rs("ID")%>">修改</a></td>
<td align="center" bgcolor="#FFFFFF" class="font2"><%ID=rs("ID") response.Write"<input type=""checkbox"" name=""checkbox"" value="""&ID&""""%></td>
</tr>
<%
rs.movenext
loop
pagecounter=pagecounter-1
end if
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
<tr>
<td colspan="7" align="center" bgcolor="#FFFFFF" class="font2">
页次:[<%=Cint(pageno)%>/<%=page%>]
记录:[<%=Cint(pagebegin)%>至<%=pagend%>条]
<%if Cint(pageno)>1 then%>
<a href="?pageno=<%=(pageno-1)%>">[上一页]</a>
<%end if%>
<%if page>1 and Cint(pageno)<Cint(page) then%>
<a href="?pageno=<%=(pageno+1)%>">[下一页]</a>
<%end if%>
</td>
</tr>
</form>
</table>
</body>
</html>



错误如下:
错误类型:
Microsoft VBScript 编译器错误 (0x800A0401)
语句未结束
/second/modanddel.asp, line 53, column 12
ID=rs("ID") response.Write"<input type=""checkbox"" name=""checkbox"" value="""&ID&""""
-----------^


浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

网页:
GET /second/modanddel.asp

#12
阳光白雪2007-08-28 09:10
<td align="center" bgcolor="#FFFFFF" class="font2">
<%
ID = rs("ID") ''这里是两个语句,是不能写在一行的
response.Write"<input type=""checkbox"" name=""checkbox"" value="""& ID &""""
%>
#13
solution2007-08-28 10:16

按你的指导,又出现了这样的错误:
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC 驱动程序不支持所需的属性。
/second/modanddel.asp, 第 5 行


浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

网页:
GET /second/modanddel.asp

#14
jamesxiaoyao2007-08-28 14:31
response.Write"&lt;input type='checkbox' name='checkbox' value='&amp;ID&amp;'&gt;"
#15
中国男孩2007-10-22 19:45

if not(rs.bof and rs.eof) then
response.write '写出
else
response.wirte "对不起,暂时还没有记录!"
end if

意思就是:如果 数据库里的记录,不以是最前,又不是最后的时候,那么就输出数据库里的记录,否则就输出:"对不起,暂时还没有记录"

#16
solution2007-10-30 17:05
谢谢.现在已懂了.
#17
cainiao1582007-10-30 19:22

我上次出现这种情况,是因为数据库里面没有记录,你最好再看一下数据库到底有没有记录!!!!

#18
永夜的极光2007-10-30 19:48
最好不要用中文作为字段名,有时候会出现一些莫名其妙的错误
#19
hmhz2007-10-31 01:27
<%ID=rs("ID") response.Write"<input type=""checkbox"" name=""checkbox"" value="""&ID&""""%>

改成

<input type="checkbox" name="checkbox" value="<%=rs("ID")%>" />

[此贴子已经被作者于2007-10-31 1:29:00编辑过]

1