asp编写大量数据查询结果分页显示问题,20分!(求助)

tyhn168 2004-11-25 09:56:20
各位兄弟,我向你们求救,希望各位大虾帮帮我,在下万分感谢!
  以下是我为一个杂志社编写稿件处理系统的小部分,主要是数据库查询分页显示代码,开始我是用来分页显示数据库读出的记录,没有任何问题.
  但是我后来建立查询表单,搜索出来后能正确显示第一页,点击第二页时则显示的是整个数据库所有记录的第二页,而不是查询结果的第二页.我始终不明白为什么,因为整个稿件处理系统有近万条记录,查询结果很多时候都要分页的,我现在必须尽快解决,而小弟技术处于低级水平,希望各位能救救我,帮我找出怎么修改这个代码,使它能够用于检索结果分页显示!万分感谢!
  -----------------message.asp-----------------------
  <!--#include file=“conn.asp“--> ’连接数据库
  <!--#include file=“ divepage.asp “--> ’调用通用分页程序
  <%
  nianfen=Trim(Request.Form(“nianfen“)) ’获取输入的年份
  %>
  <%
  set rs=server.CreateObject(“ADODB.RecordSet“)
  ’连接和打开数据库之后,用recordset组件创建包含数据的游标,就是存在内存中的数据
  if (nianfen<>““) then
  sql = “select * from gdcic“&“ where year like“&“’%“&nianfen&“%’ ORDER BY id DESC“
   ’模糊查询输入的年份与数据库里的对应值
  rs.open sql,conn,1,1
  ’以读取的方式拿出来存在内存中
  end if
  %>
  
  <html>
  <head>
  <script language=“JavaScript“ src=“function.js“></script> ’调用分页程序
  </head>
  <body>


  —————————————————查询结果显示————————

  <table border=“1“ width=“100%“ align=“center“ cellpadding=“0“ cellspacing=“0“ border colorlight=“#CCCCCC“ bordercolordark=“#FFFFFF“ style=“line-height:130%“>
   <tr valign=“center“ align=“center“ >
   <td width=“7%“>姓名</td>
   <td width=“32%“ height=“20“>文章标题</td>
  …………………………………………省略程序
   </tr>
  ——————————调用分页函数—————————
   <%
   dim intRsCount,intPageSize,intPageCount,intPageNo
   intPageSize=30
   if pageDivide(intRsCount,intPageSize,intPageCount,intPageNo) then
   for intTemp=1 to intPageSize
   if rs.EOF then exit for
   %>
  
   <tr>
   <td height=“18“> <%=rs(“author1“)%></td>
   <td> <%=rs(“title“)%></td>
   …………………………………省略程序
   </tr>
   <%
   rs.MoveNext ()
   next
   end if
  %>
  </table>
  <table align=“center“ cellpadding=“0“ width=“100%“>
  <tr><td>
  <%call pageTurn(intRsCount,intPageSize,intPageCount,intPageNo)%>
  ’调用页码连接显示函数
  </td></tr></table>
  </body>
  </html>
  <%rs.close
   conn.close%> ’关闭数据库
  
  ——————————Function.js(文件分页函数定义)————————————
  
  function pageTurn(rsCount,pageSize,pageCount,pageNo,strParam){
   if(pageCount>1){
   with(document){
   write(“<table width=\“100%\“ border=\“0\“ cellpadding=\“0\“ cellspacing=\“0\“><tr> <td> 页次:“);
   write(pageNo+“/“+pageCount+“ 每页:“+pageSize+“ 记录数:“+rsCount);
   write(“</td><td align=\“right\“>“);
   var intFrom=pageNo-5;
   if(intFrom<1)intFrom=1;
   var intTo=intFrom+10;
   if(intTo>pageCount){
   intTo=pageCount;
   if(pageCount>10)
   intFrom=intTo-10;
   else
   intFrom=1;
   }
   write(“分页:“ );
   if(intFrom>1)
   write(“<a href=\“?“+paramAdd(strParam,“page“,1)+“\“><<</a> “);
   for(var i=intFrom;i<=intTo;i++){
   if(i==pageNo)
   write(“<font class=\“highlight\“>“+i+“</font> “);
   else
   write(“<a href=\“?“+paramAdd(strParam,“page“,i)+“\“>“+i+“</a> “);
   }
   if(intTo<pageCount){
   write(“<a href=\“?“+paramAdd(strParam,“page“,pageCount)+“\“>>></a> “);
   }
   write(“转到:<input type=\“text\“ size=4 id=\“objPageNo\“ style=\“text-align:center\“ value=\““+pageNo+“\“ “);
   write(“onkeydown=\“if(event.keyCode==13){location.replace(’?’+paramAdd(’“+strParam+“’,’page’,this.value));}\“>“);
   write(“<input type=\“button\“ value=\“GO\“ onclick=\“location.replace(’?’+paramAdd(’“+strParam+“’,’page’,objPageNo.value));\“>“);
   write(“</td></tr></table>“);
   }
   }
  }
  
  ————————————divepage.asp(通用分页程序)————————————
  <%
  function pageDivide(byRef rsCount,byRef pageSize,byRef pageCount,byRef pageNo)
   if not rs.EOF then
   rsCount = rs.RecordCount
   rs.PageSize = pageSize
   pageCount = rs.PageCount
   pageNo = request.QueryString(“page“)
   if isNumeric(pageNo) then
   pageNo = cint(pageNo)
   else
   pageNo = 1
   end if
   if pageNo<1 then pageNo=1
   if pageNo>pageCount then pageNo=pageCount
   rs.AbsolutePage=pageNo
   pageDivide = true
   else
   rsCount = 0
   pageCount = 0
   pageNo = 0
   pageDivide = false
   end if
  End function
  ’通用分页显示
  Sub pageTurn(byVal rsCount,byVal pageSize,byVal pageCount,byVal pageNo)
   Response.Write “<script language=““javascript““>pageTurn(“&rsCount&“,“&pageSize&“,“&pageCount&“,“&pageNo&“,“““&EncodeJs(strParam)&“““);</script>“
  End Sub
  %>
...全文
150 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tyhn168 2004-11-28
问题解决,谢谢micher_yan
回复
tyhn168 2004-11-28
我已经结贴给分了
回复
micher_yan 2004-11-25
晕,
得到当前页的sql语句
sql="select top "&pagesize&" * from "&table&"where id>"&GetPageID(rs,table,PageSize,Page)&" order by id"
回复
micher_yan 2004-11-25
个人认为分页完全不用这个复杂,前提是表有自动编号id字段(一般都有)
function GetPageID(rs,table,PageSize,Page)
sql="select id from "&table&"order by id"
rs.open sql,conn,3,1
rs.PageSize=Page_Size
if cint(rs.PageCount)<cint(page) then page=rs.PageCount
rs.AbsolutePage=page
GetPageID=rs(0)
end function
得到当前页的sql语句
sql="select top "&pagesize&" * from "&table&" order by id"
回复
zhang17 2004-11-25
问题在与翻页的时候你没把查询条件放进来
回复
tyhn168 2004-11-25
本以为这个分页函数还可以,但是却没有想到搜索查询结果只能正确显示第一页,本人估计是参数传递的问题,第二页时rs没有传递过去,看了别人的很多程序,还是不明白,希望能帮我改改这段代码,使它能够用于搜索结果正确分页显示.万分感谢!
回复
tyhn168 2004-11-25
谢谢micher_yan,我试一试能不能修改成功哈!
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-11-25 09:56
社区公告
暂无公告