关于分页显示方面的问题,求救!!!!

ckj2018 2001-06-09 07:00:00
我想问大家一个问题,是关于分页显示方面的,假如我有一个表(t1),内有
两个字段,我想让它以每页30个纪录的形式显示出来,应该怎样写呢?

name address
n1 abc1 n2 abc2
n3 abc3
n4 abc4
n5 abc5
n6 abc6
n7 abc7
... ...
n-n abc-n



<%
''''''''''''(1)判断页面'''''''''''''''''''''''''''''''
if isempty(request.querystring("pagenumber")) then
currentpage=1
else
currentpage=cint(request.querystring("pagenumber"))
end if
'''''''''''''(2)连接数据库''''''''''''''''''''''''''''''
set conn = server.createobject("adodb.connection")
conn.open "Driver={SQL Server};Description=sqldemo;SERVER=127.0.0.1;UID=sa;
PWD=;DATABASE=mydatabase"
set aa=conn.execute("select * from t1 order by name")
aa.cursorlocation=3
aa.pagesize=30
aa.absolutepage=currentpage
''''''''''''''(3)进入循环,显示数据''''''''''''''''''''
do until aa.absolutepage<>currentpage or aa.eof
response.write aa("name")&","& aa("address")&"<p>"
aa.movenext
loop
'''''''''按照纪录的多少,打印页数和超连接'''''''''''
response.write"select page to view more records:"
for i=1 to aa.pagecount
response.write i '"<a href="./kk1.asp?pagenumber="&i&"">"&i&"</a>"
next

%>
'''''''''''但是还有这样的错误''''''''''''''''''''''
ADODB.Recordset 错误 '800a0cb3'

当前 Recordset 不支持书签。这可能是提供者或选定的光标类型限定的。

/kk1.asp,行12
'''''''''''''请各位高手给于指点,和提出见解''''''''''''''



...全文
77 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckj2018 2001-06-12
  • 打赏
  • 举报
回复
谢谢二位,我的问题解决了。谢谢
to shi716,您的方法我回去试一试。
ckj2018 2001-06-11
  • 打赏
  • 举报
回复
to freezwy(网络自由人):
谢谢您的提醒,在分页方面,我已经取得了阶段性的进展,相信不会耽误太长时间
我做了一个简单的例子:
<%
If IsEmpty(Request.QueryString("PageNumber")) Then
CurrentPage = 1
Else
CurrentPage = cint(Request.QueryString("PageNumber"))
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
connectstring="dsn=empsdatabase1;user id=sa;password=;"
set rs=server.createobject("adodb.recordset")
rs.cursorlocation=3
rs.pagesize=3
rs.open "tblemps",connectstring,,,2
rs.absolutepage=currentpage
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
do until rs.absolutepage<>currentpage or rs.eof
response.write rs("name")&","& rs("address")&"<p>"
rs.movenext
loop
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
response.write"select page to view more records:"
for i=1 to rs.pagecount
'response.write"<a href=./cut-page-On-aspbook.asp?Pagenumber="&i&">"&i&"</a>"


Response.Write "<A HREF=""./cut-page-On-aspbook.asp?PageNumber=" & I _
& """>" & I & "</A> "
next
%>
对于您个给我的代码我看了好几遍,有两个地方不太懂:
(1)
page_start=(pagecount-1)*rs.pagesize
if pagecount=1 then page_start=1
page_end=rs.pagesize*pagecount
if pagecount*rs.pagesize=>rs.recordcount then page_end=rs.recordcount
我有一点弄不清楚变量的含义。
(2)就是关于最后的“上一页“、“下一页“的问题。

最后还是非常感谢您的指教!


shi716 2001-06-11
  • 打赏
  • 举报
回复
有两种方法,一:用游标,二:直接用sql语句查询,因游标效率低,介绍第二种:
以你的问题为例:先为t1表建立主键定为tID
你可以这样写:
每一页30条。
第n页:
sql="select Top 30 * from (select Top "&30*n&" * from t1 order by tID ) as b order by tID desc"
set rs=con.execute(sql) //con为adodb.connection对象
session("n")=n //将页码写入session变量
上一页:
n=session("n") //读出当前页码
n=n-1 //页码减一
sql="select Top 30 * from (select Top "&30*n&" * from t1 order by tID ) as b order by tTD desc "
set rs=con.execute(sql)
session("n")=n //将页码写入session变量
下一页:
n=session("n") //读出当前页码
n=n+1
sql="select Top 30 * from (select Top "&30*n&" * from t1 order by tID ) as b order by tID desc"
session("n")=n //将页码写入session变量

其实此法只是对前30*n个记录正向排序,然后将排序结果反向排序,再提取前30条记录而已,从而实现分页
ckj2018 2001-06-09
  • 打赏
  • 举报
回复
哦,谢谢您,我自己改一改,看看能不能看得懂
freezwy 2001-06-09
  • 打赏
  • 举报
回复
注意:使用这种分页时要使用set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
给你段代码,自己改改吧.
<% if not isempty(request("page")) then
pagecount=cint(request("page"))
else
pagecount=1
end if
set rs=server.createobject("adodb.recordset")
sql="select * from pmailbox where username='"&session("puid")&"'"
rs.open sql,session("conn"),1,1
if rs.eof and rs.bof then
response.write"无!"
else
rs.pagesize=10
if pagecount>rs.pagecount or pagecount<=0 then
pagecount=1
end if
rs.AbsolutePage=pagecount
end if
page_start=(pagecount-1)*rs.pagesize
if pagecount=1 then page_start=1
page_end=rs.pagesize*pagecount
if pagecount*rs.pagesize=>rs.recordcount then page_end=rs.recordcount
end if%>
共有[<font color="#ff0000"><%=rs.recordcount%></font>]
页次:[<font color="#0000AE"><%=pagecount%></font>/<%=rs.pagecount%>]</font>
<tr bgcolor="#f3f3fd">
.................
</tr>
<% do while not rs.eof %>
.............
<% i=i+
rs.movenext
if i>=rs.PageSize then exit do
loop %>
<p align="center">
<%if pagecount=1 and rs.pagecount<>pagecount then%>
<a href="mymailbox.asp?page=<%=cstr(pagecount+1)%>">
<font color="#000000">下一页>>></font></a><a>
<% end if %>
<% if rs.pagecount>1 and rs.pagecount=pagecount then %>
</a><a href="mymailbox.asp?page=<%=cstr(pagecount-1)%>">
<font color="#000000"><<<上一页</font></a><a>
<%end if%>
<%if pagecount<>1 and rs.pagecount<>pagecount then%>
</a><a href="mymailbox.asp?page=<%=cstr(pagecount-1)%>">
<font color="#000000"><<<上一页</font></a><a> </a> <a href="mymailbox.asp?page=<%=cstr(pagecount+1)%>">
<font color="#000000">下一页>>></font></a><a>
<% end if
rs.close
set rs=nothing
%>
ckj2018 2001-06-09
  • 打赏
  • 举报
回复


name address
n1 abc1
n2 abc2
n3 abc3
n4 abc4
n5 abc5
n6 abc6
n7 abc7
... ...
n-n abc-n
不好意思,表格打串行了。



28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧