由一个记录找它得上下两个记录得问题
<%
Set conn = Server.CreateObject("ADODB.Connection")'连接数据库
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/article.mdb")
conn.Open connstr
set rs=server.createobject("ADODB.Recordset")
sql="SELECT * FROM 文章 where 文件名='"&name&"'"
rs.open sql,conn,3
if not (rs.eof or rs.bof) then
<%rs.moveprevious
if not rs.BOF then%>
上一篇: <a href="?name=<%=rs("文件名")%>"><%=rs("标题")%></a><br />
<%else%>
上一篇: 没有了<br />
<%end if%>
<%rs.movenext
rs.movenext
if not rs.eof then%>
下一篇: <a href="?name=<%=rs("文件名")%>"><%=rs("标题")%></a><br />
<%else%>
下一篇: 没有了<br />
<%end if%>
<%end if%>
数据库中有3条以上记录的,但是为什么结果老是bof eof为真呢?
问题点数:50、回复次数:14Top
1 楼zorou_fatal(The world and system is even)回复于 2003-08-01 18:59:53 得分 10
set rs=server.createobject("ADODB.Recordset")
sql="SELECT * FROM 文章 where 文件名='"&name&"'"
rs.open sql,conn,3
if not (rs.eof or rs.bof) then
<%rs.moveprevious
if not rs.BOF then%>
上一篇: <a href="?name=<%=rs("文件名")%>"><%=rs("标题")%></a><br />
<%else%>
上一篇: 没有了<br />
<%end if%>
<%rs.movenext
rs.movenext
if not rs.eof then%>
下一篇: <a href="?name=<%=rs("文件名")%>"><%=rs("标题")%></a><br />
<%else%>
下一篇: 没有了<br />
<%end if%>
<%end if%>
注意你的逻辑。
你的rs刚读出来就是在第一条记录的位置,你立刻就 moveprevious可不就在bof上吗?Top
2 楼binghwuil(冰辉)回复于 2003-08-01 19:01:25 得分 0
噢,源代码是:
<%
Set conn = Server.CreateObject("ADODB.Connection")'连接数据库
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/article.mdb")
conn.Open connstr
set rs=server.createobject("ADODB.Recordset")
sql="SELECT * FROM 文章 where 文件名='"&name&"'"
rs.open sql,conn,3
if not (rs.eof and rs.bof) then
<%rs.moveprevious
if not rs.BOF then%>
上一篇: <a href="?name=<%=rs("文件名")%>"><%=rs("标题")%></a><br />
<%else%>
上一篇: 没有了<br />
<%end if%>
<%rs.movenext
rs.movenext
if not rs.eof then%>
下一篇: <a href="?name=<%=rs("文件名")%>"><%=rs("标题")%></a><br />
<%else%>
下一篇: 没有了<br />
<%end if%>
<%end if%>
数据库中有3条以上记录的,但是为什么结果老是游标移动后的 bof eof为真呢?Top
3 楼binghwuil(冰辉)回复于 2003-08-01 19:03:42 得分 0
"注意你的逻辑。
你的rs刚读出来就是在第一条记录的位置,你立刻就 moveprevious可不就在bof上吗?"
那请问怎么办呢?
Top
4 楼binghwuil(冰辉)回复于 2003-08-01 19:21:30 得分 0
我先让他rs.movenext
也是eof为真
到底是怎么回事呢?Top
5 楼lxd1979(李子)回复于 2003-08-01 19:33:09 得分 0
去掉第一句的rs.moveprevious 试试Top
6 楼zorou_fatal(The world and system is even)回复于 2003-08-01 19:37:35 得分 10
<%
dim conn
set conn=server.createobject("adodb.connection")'建立连接对象
conn.open "DR"'打开数据源
set rst=server.CreateObject("adodb.recordset")'建立记录集
SQL="select * from dr order by id asc"'SQL语句
rst.Open SQL,conn,1,1'以可以产生pagecount的方式打开
'rst.PageSize=10'设定每页页数为十
totalcounts=rst.recordCount'得到总页数
rst.AbsolutePosition=1'先设定当前页数为1,然后在后面根据参数具体情况修改
Response.Write cint(Request.QueryString("pages"))>totalcounts
if cint(Request.QueryString("Pages"))=0 then'判断,当无参数也就是页面初次加载的时候
rst.absoluteposition=1'当然是在第一页
currentpage=1
else
if not cint(Request.QueryString("pages"))>totalcounts then'判断,如果有参数传递过来且不大于最大页面数
rst.absoluteposition=cint(Request.QueryString("pages"))'则当前页面就为传递过来的参数
currentpage=cint(Request.QueryString("pages"))
end if
end if
Response.Write currentpage
%>
当前是第<%=currentpage%>页
<%
Response.Write rst("department")&rst("human")&"<br>"
%>
<%
if currentpage<totalcounts then
%>
<a href=pages.asp?pages=<%=currentpage+1%>>下一页</a>
<%end if%>
<%
if currentpage>1 then
%>
<a href=pages.asp?pages=<%=currentpage-1%>>上一页</a>
<%end if%>
<%
rst.Close'关闭对象,节约资源
set rst=nothing
conn.close
set conn=nothing
%>
给你看看我改的。Top
7 楼zorou_fatal(The world and system is even)回复于 2003-08-01 19:39:38 得分 10
你把sql语句改一下就可以了。Top
8 楼binghwuil(冰辉)回复于 2003-08-01 19:43:49 得分 0
谢谢
不过我得查询不一样的
SQL="select * from dr order by id asc"'SQL语句
你做的是分页,查询出的记录集包含很多记录.
sql="SELECT * FROM 文章 where 文件名='"&name&"'"
我的只是查出一条记录
原意是想通过这个记录想查出它上下的两个记录Top
9 楼zorou_fatal(The world and system is even)回复于 2003-08-01 19:49:01 得分 10
这样不行。
除非你把id查出来,然后在
"select * from tablename where id < "&id&" order by id desc"
然后rst.movefirst
"select * from tablename where id > "&id&" order by id asc"
然后rst.movefirst
Top
10 楼zorou_fatal(The world and system is even)回复于 2003-08-01 19:54:13 得分 10
如果你的数据库里没有同名的文章,那么那个recordset里面始终只有一条记录。
无论你是moveprevious 还是movenext都是会出界的。Top
11 楼binghwuil(冰辉)回复于 2003-08-01 20:37:50 得分 0
明白
再想办法了
结贴了
Top
12 楼hchxxzx(NET?摸到一点门槛)回复于 2003-08-01 20:39:32 得分 0
如果你是ACCESS数据库,那么
假设当前ID为5(你要事先求取出来)
sql="select * from xw where id=(select top 1 id from xw where id>5 order by id asc)"
以上是求取ID号比当前号大的下一条记录,比当前小的记录自己参照上面所写。
如果是ORACLE数据库则可
sql="select * from xw where id=(select id from xw where id>5 and rownum=1)"Top
13 楼binghwuil(冰辉)回复于 2003-08-01 20:49:29 得分 0
谢谢了楼上的.
Top
14 楼lindexter(Dexter)回复于 2003-08-01 21:08:34 得分 0
同意Top




