asp制作的一个网页进行查询,在另个网页里显示结果,查询的结果有多条,如何实现显示的结果分页?
那么究竟如何才能做到将数据库的查询结果分页显示呢?其实方法有很多,但主要有两种:一、将数据库中所有符合查询条件的记录一次性的都读入recordset中,存放在内存中,然后...
那么究竟如何才能做到将数据库的查询结果分页显示呢?其实方法有很多,但主要有两种:
一、将数据库中所有符合查询条件的记录一次性的都读入 recordset 中,存放在内存中,然后通过 ADO Recordset 对象所提供的几个专门支持分页处理的属性: PageSize( 页大小 )、 PageCount( 页数目 ) 以及 AbsolutePage( 绝对页 ) 来管理分页处理。
二、根据客户的指示,每次分别从符合查询条件的记录中将规定数目的记录数读取出来并显示。
两者的主要差别在于前者是一次性将所有记录都读入内存然后再根据指示来依次做判断分析从而达到分页显示的效果,而后者是先根据指示做出判断并将规定数目的符合查询条件的记录读入内存,从而直接达到分页显示的功能。
第二种方法如何实现啊,请详细指教。 展开
一、将数据库中所有符合查询条件的记录一次性的都读入 recordset 中,存放在内存中,然后通过 ADO Recordset 对象所提供的几个专门支持分页处理的属性: PageSize( 页大小 )、 PageCount( 页数目 ) 以及 AbsolutePage( 绝对页 ) 来管理分页处理。
二、根据客户的指示,每次分别从符合查询条件的记录中将规定数目的记录数读取出来并显示。
两者的主要差别在于前者是一次性将所有记录都读入内存然后再根据指示来依次做判断分析从而达到分页显示的效果,而后者是先根据指示做出判断并将规定数目的符合查询条件的记录读入内存,从而直接达到分页显示的功能。
第二种方法如何实现啊,请详细指教。 展开
3个回答
展开全部
楼主,主要还是玩SQL语句的使用,需要那页的几条就Top对应的
以下代码供参考:
<%
'每页的记录数
dim pagesize
pagesize= "30"
'读出总记录数,总页数,作者注
dim totalrecords,totalpages
sqlstr="select count(id) as recordsum from table1"
set rs=conn.execute(sqlstr,0,1)
totalrecords=rs("recordsum")
if int(totalrecords/pagesize)=totalrecords/pagesize then
totalpages=totalrecords/pagesize
else
totalpages=int(totalrecords/pagesize)+1
end if
rs.close
set rs=nothing
dim page
page=request("page") '获取当前要查看的页码
if isnumeric(page)=false then
response.write "<script language=javascript>alert('参数错误!');"
response.write "window.close();</script>"
response.end
end if
if page="" or page<1 then page=1
if page-totalpages>0 then page=totalpages
page=int(page)
if page=1 then
sql="select top "&pagesize&" id,title,time from table1 order by time desc"
else
'最主要看懂下面这句,选择的就是小于上一页最后一条记录的发布消息时间,共计取pagesize条
sql="select top "&pagesize&" id,title,time from table1 where time<(select min (time) from (select top "&pagesize*(page-1)&" time from table1 order by time desc) as t) order by time desc"
end if
set rs = server.createobject ("adodb.recordset")
rs.open sql,conn,1,1
do while not rs.eof
response.write "每条记录信息:"&rs("id")&"<br>"
rs.movenext
loop
rs.close
set rs=nothing
''翻页代码省略
%>
以下代码供参考:
<%
'每页的记录数
dim pagesize
pagesize= "30"
'读出总记录数,总页数,作者注
dim totalrecords,totalpages
sqlstr="select count(id) as recordsum from table1"
set rs=conn.execute(sqlstr,0,1)
totalrecords=rs("recordsum")
if int(totalrecords/pagesize)=totalrecords/pagesize then
totalpages=totalrecords/pagesize
else
totalpages=int(totalrecords/pagesize)+1
end if
rs.close
set rs=nothing
dim page
page=request("page") '获取当前要查看的页码
if isnumeric(page)=false then
response.write "<script language=javascript>alert('参数错误!');"
response.write "window.close();</script>"
response.end
end if
if page="" or page<1 then page=1
if page-totalpages>0 then page=totalpages
page=int(page)
if page=1 then
sql="select top "&pagesize&" id,title,time from table1 order by time desc"
else
'最主要看懂下面这句,选择的就是小于上一页最后一条记录的发布消息时间,共计取pagesize条
sql="select top "&pagesize&" id,title,time from table1 where time<(select min (time) from (select top "&pagesize*(page-1)&" time from table1 order by time desc) as t) order by time desc"
end if
set rs = server.createobject ("adodb.recordset")
rs.open sql,conn,1,1
do while not rs.eof
response.write "每条记录信息:"&rs("id")&"<br>"
rs.movenext
loop
rs.close
set rs=nothing
''翻页代码省略
%>
展开全部
个人觉得第二种也用第一种方法写,主要的区别仅仅是sql语句的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用分页函数
'分页函数
'格式为:共有 13 条记录 第[1 2 3 4 5〕 页
function page_split(pagesize,currentpage,filename,rss,svar)
dim splitStr
if currentpage<>"" then
currentpage=cint(currentpage)
else
currentpage=1
end if
rss.pagesize=pagesize
rss.AbsolutePage=currentpage
splitStr=splitStr& "共有 "&rss.recordcount&" 条记录 "
for i=1 to rss.PageCount
if i=currentpage then
splitStr=splitStr& "[<font class=red>"&i&"</font>]"
else
splitStr=splitStr& "[" &"<a href="&fileName&"?page=" &i &svar&">" &i &"</a>" &"]"
end if
next
page_split=splitStr
end function
调用方式:
<%
pagesize=16 '每页显示记录数目
page=request("page")
if page="" then
page=1
else
page=cint(page)
end if
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
page_i=page_split(pagesize,page,"news.asp",rs,"")'调用函数赋值给page_i,在后面相应的位置调用显示page_i
num=0
do while not rs.eof and num<pagesize
'输出信息
num=num+1
rs.movenext
loop
else
end if
rs.close
set rs=nothing
%>
'分页函数
'格式为:共有 13 条记录 第[1 2 3 4 5〕 页
function page_split(pagesize,currentpage,filename,rss,svar)
dim splitStr
if currentpage<>"" then
currentpage=cint(currentpage)
else
currentpage=1
end if
rss.pagesize=pagesize
rss.AbsolutePage=currentpage
splitStr=splitStr& "共有 "&rss.recordcount&" 条记录 "
for i=1 to rss.PageCount
if i=currentpage then
splitStr=splitStr& "[<font class=red>"&i&"</font>]"
else
splitStr=splitStr& "[" &"<a href="&fileName&"?page=" &i &svar&">" &i &"</a>" &"]"
end if
next
page_split=splitStr
end function
调用方式:
<%
pagesize=16 '每页显示记录数目
page=request("page")
if page="" then
page=1
else
page=cint(page)
end if
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
page_i=page_split(pagesize,page,"news.asp",rs,"")'调用函数赋值给page_i,在后面相应的位置调用显示page_i
num=0
do while not rs.eof and num<pagesize
'输出信息
num=num+1
rs.movenext
loop
else
end if
rs.close
set rs=nothing
%>
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询