ASP数据库分页

写了一个ASP数据库的分页函数。
 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<%
 ' @ sDesURL 链接地址,可以是一个文件名,也可以是一个有一些参数的URL
 ' @ nTotalNumber 总数量
 ' @ nMaxPerPage 每页数量
 ' @ nCurrentPage 当前页
 ' @ bShowTotal 是否显示总数量
 ' @ bShowCombo 是否用下拉列表显示所有页面以供跳转
 ' @ sUnit 计数单位
 sub Page(sDesURL,nTotalNumber,nMaxPerPage,nCurrentPage,bShowTotal,bShowCombo,sUnit)
  dim n,i,strTemp,strUrl
  
  '计算页数
  if nTotalNumber mod nMaxPerPage =0 then
   n = nTotalNumber \ nMaxPerPage
  else
   n = nTotalNumber \ nMaxPerPage + 1
  end if
  
  
  response.Write("<table align='center' ID='Table1'><form name='ShowPages' method='post' action='"&sDesURL&"' ID='Form1'><tr><td>")
  if bShowTotal = true then
   response.Write("共 <b>"&nTotalNumber&"</b>"&sUnit&"记录&nbsp;&nbsp;")
  end if
  
  '根据输入的sDesURL向它加入?或&
  strUrl = pasteURL(sDesURL)
  if nCurrentPage < 2 then
   response.Write("首页  上一页  ")
  else
   response.Write("<a href='"&strUrl&"page=1'>首页</a>  ")
   response.Write("<a href='"&strUrl&"page="&(nCurrentPage-1)&"'>上一页</a>  ")
  end if
  
  if n-nCurrentPage < 1 then
   response.Write("下一页  尾页")
  else
   response.Write("<a href='"&strUrl&"page="&(nCurrentPage + 1)&"'>下一页</a>  ")
   response.Write("<a href='"&strUrl&"page="&n&"'>尾页</a>")
  end if
  
  response.Write("  页次:<strong><font color=red>"&nCurrentPage&"</font>/"&n&"</strong>页 ")
  response.Write("<b>"&nMaxPerPage&"</b>"&sUnit&"/页")
  if bShowCombo = true then
   response.Write("  转到 : <select name='page' size='1' onchange='javascript:submit()' ID='Select1'>")
   
   for i = 1 to n
    response.Write("<option value='"&i&"'")
    if cint(nCurrentPage) = cint(i) then
     response.Write("selected")
    end if
    
    response.Write(">第"&i&"页</option>")
   next
   
   response.Write("</select>")
  end if
  response.Write("</td></tr></form></table>")
 end sub
 
 function PasteURL(strUrl)
  if strUrl = "" then
   PasteURL = ""
   exit function
  end if
  
  '如果传入的URL末尾不是"?",有两种情况:
  '1.无"?",此时需加入一个"?"
  '2.有"?",再判断有误"&"
  if InStr(strUrl,"?") < len(strUrl) then
   if InStr(sttrUrl,"?") > 1 then
    if InStr(strUrl,"&") < len(strUrl) then
     PasteURL = strUrl&"&"
    else
     PasteURL = strUrl
    end if
   else
    PasteURL = strUrl&"?"
   end if
  else
   PasteURL = strUrl
  end if
 end function
%>
 
通过一个实例来看看使用方法。
 
'conn.asp文件如下
<%
 Dim conn,url
 set conn = server.CreateObject("adodb.connection")
 url = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/FY/data.mdb")
 conn.open = url
%>
'连接数据库data.mdb,有web表,ly字段
 
'fy.asp内容如下
< %@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="conn.asp"-->
<!--#include file="fy_fun.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=" http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>测试</title>
</head>
<body>
<p></p>
<%
 dim sql
 dim rs
 set rs = server.CreateObject("adodb.recordset")
 sql="select * from web"
 rs.open sql,conn,3,2

 '设置每页数据数量
 rs.pagesize = 5

 '判断当前处于哪页
 if request("page")<>"" then
    epage=cint(request("page"))
     if epage<1 then epage=1 end if
     if epage>rs.pagecount then epage=rs.pagecount end if
 else
  epage=1
 end if
  
 rs.absolutepage=epage
  
 for i = 0 to rs.pagesize - 1
  response.Write("<center>"&rs("ly")&"<center><br />")
  rs.movenext
 next
 
 Page "new_fy.asp",rs.recordcount,5,epage,true,true,"条"
%>
</body>
</html>

你可能感兴趣的:(数据库,分页,职场,asp,休闲)