CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

由一个记录找它得上下两个记录得问题

楼主binghwuil(冰辉)2003-08-01 18:57:12 在 Web 开发 / ASP 提问

<%  
  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

相关问题

  • 如何让记录的上下移动
  • 关于查找记录
  • 查找记录的问题..
  • 记录查找问题
  • 查找今日记录.
  • 知道一条记录的记录号,怎样找到这条记录?
  • 怎样使datawindow通过上下键来移动记录焦点
  • DBGrid怎么支持鼠标中键上下移动记录?
  • 我在记录集中查找记录出错
  • 怎样向指定的文件写记录,查找记录?

关键词

  • 数据库
  • 页面
  • sql
  • 记录
  • bof
  • moveprevious
  • xw
  • cint
  • 查出
  • 参数

得分解答快速导航

  • 帖主:binghwuil
  • zorou_fatal
  • zorou_fatal
  • zorou_fatal
  • zorou_fatal
  • zorou_fatal

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo