asp编写大量数据查询结果分页显示问题,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
%>