分页程序

100万ACCESS库分页程序,本程序两次读库操作

连接数据库

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<% dim time1,time2
    time1=timer
    Server.ScriptTimeout=1000 '脚本运行超时时间
    dim conn,rs,sql,db
db="test10.mdb"
set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
%>

 

分页部分

 

<%     '精点一百的简单分页,两次读库操作
          dim jd100_ID,jd100_biao,jd100_zd,jd100_order

 

          jd100_ID="id"  '索引ID
          jd100_biao="aa" '表名
          jd100_zd="id,ipone,ipend,come" '字段名
          jd100_order="ORDER BY ID DESC"   '倒序

 

         
         dim jd100_page_count,jd100_page_n,jd100_page_x,page
         jd100_page_n=20 '每页显示留言数
         jd100_page_x=5  '每页显示的页数

 

         page = Request.QueryString("page") '得到当前页码
         if page="" or Not IsNumeric(Page) then page=1
         page =int(page)
         '从数据库中读取统计当前记录总数
         set Rs=server.createobject("adodb.recordset")
         'sql= "SELECT Count("&jd100_ID&") FROM "&jd100_biao&" "
         'Rs.Open SQL,Conn,0,1,&H0001
         'jd100_page_count = Rs(0)
         'Rs.Close

 

         jd100_page_count=conn.execute("select COUNT("&jd100_ID&") From "&jd100_biao&" ",0,1)(0)

 

' 显示页码的函数
Function jd100_pagefun(jd100_page_count)
         dim jd100_page_k,jd100_page_y,jd100_page_page2
         '计算页数相关
         if jd100_page_count/jd100_page_n = int(jd100_page_count/jd100_page_n) then
         jd100_page_y=int(jd100_page_count/jd100_page_n)
         else
         jd100_page_y=int(jd100_page_count/jd100_page_n)+1
         end if
         if page>jd100_page_y then page=jd100_page_y 
         jd100_page_page2= int(page/jd100_page_x)
         if page/jd100_page_x>jd100_page_page2 then jd100_page_page2=jd100_page_page2+1
         jd100_page_k=jd100_page_page2*jd100_page_x
         if jd100_page_k>jd100_page_y then jd100_page_k=jd100_page_y              
         '打出页码
               Response.Write ("有"&jd100_page_count&" 条 "& page &"/"& jd100_page_y &"页 分页")
               if jd100_page_page2>1 then
               Response.Write ("<a href='?page=1'><font face=webdings>9</font></a>")
               Response.Write (" <a href='?page="& jd100_page_page2*jd100_page_x-jd100_page_x &"'><font face=webdings>3</font></a>")
               end if
               For jd100_page_m =jd100_page_page2*jd100_page_x-(jd100_page_x-1) To jd100_page_k
               Response.Write (" [<a href='?page="& jd100_page_m &"'>"& jd100_page_m &"</a>]")
               Next
               if jd100_page_page2*jd100_page_x < jd100_page_y then
               Response.Write (" <a href='?page="&jd100_page_m&"'><font face=webdings>4</font></a>")
               Response.Write (" <a href='?page="&jd100_page_y&"'><font face=webdings>:</font></a>")
               end if
End Function
         '打开记录集
         sql="select  "&jd100_zd&" From "&jd100_biao&" "&jd100_order&" "
         Rs.Open sql,Conn,1,1,&H0001
        '根据分页参数获取当前页面纪录
         Rs.AbsolutePosition=Rs.AbsolutePosition+((Abs(Page)-1)*jd100_page_n)
%>

 


读取显示页码函数

 

<%=jd100_pageFun(jd100_page_count)%>

 


显示和循环部分
       <%
       ipage=0
       do while not rs.eof and ipage < jd100_page_n
       ipage=ipage+1
       %>
              这里读取内容

 

        <%
        rs.movenext
                  loop
        Rs.Close '每用完一次RS,就关一次
                     '每页最后,关闭和释放内存
        Set Rs = Nothing
        conn.close
        set conn=nothing
%>

 


本页的执行时间计算

 

<% time2=timer
Response.Write "<br><div align=""center"">执行时间"&(time2-time1)*1000&"毫秒</div><br>"

 

%>


 『2楼』作者:极品人渣 时间:2005-6-21 17:44:17
100万ACCESS库分页都没问题的分页程序,本程序三次读库操作

 

 

  <%  
          dim jd100_ID,jd100_biao,jd100_zd,jd100_order

 

          jd100_ID="id"  '索引ID
          jd100_biao="aa" '表名
          jd100_zd="id,ipone,ipend,come" '字段名
          jd100_order="ORDER BY ID DESC"   '倒序

 

          '精点一百的简单分页
         dim jd100_page_count,jd100_page_n,jd100_page_x,page
         jd100_page_n=20 '每页显示留言数
         jd100_page_x=5  '每页显示的页数
         page = Request.QueryString("page") '得到当前页码
         if page="" or Not IsNumeric(Page) then page=1
         page =int(page)
         '统计当前记录数
         jd100_page_count=conn.execute("select COUNT("&jd100_ID&") as jd100_page_count From "&jd100_biao&" ")("jd100_page_count")

 

Function pagefun(jd100_page_count)
         dim jd100_page_k,jd100_page_y,jd100_page_page2
         if jd100_page_count/jd100_page_n = int(jd100_page_count/jd100_page_n) then '计算出分页数
         jd100_page_y=int(jd100_page_count/jd100_page_n)
         else
         jd100_page_y=int(jd100_page_count/jd100_page_n)+1
         end if
         if page>jd100_page_y then page=jd100_page_y 

 

         jd100_page_page2= int(page/jd100_page_x)

 

         if page/jd100_page_x>jd100_page_page2 then jd100_page_page2=jd100_page_page2+1
         jd100_page_k=jd100_page_page2*jd100_page_x
         if jd100_page_k>jd100_page_y then jd100_page_k=jd100_page_y              
        
               Response.Write ("有"&jd100_page_count&" 条 "& page &"/"& jd100_page_y &"页 分页")
               if jd100_page_page2>1 then
               Response.Write ("<a href='?page=1'><font face=webdings>9</font></a>")
               Response.Write (" <a href='?page="& jd100_page_page2*jd100_page_x-jd100_page_x &"'><font face=webdings>3</font></a>")
               end if
               For jd100_page_m =jd100_page_page2*jd100_page_x-(jd100_page_x-1) To jd100_page_k
               Response.Write (" [<a href='?page="& jd100_page_m &"'>"& jd100_page_m &"</a>]")
               Next
               if jd100_page_page2*jd100_page_x < jd100_page_y then
               Response.Write (" <a href='?page="&jd100_page_m&"'><font face=webdings>4</font></a>")
               Response.Write (" <a href='?page="&jd100_page_y&"'><font face=webdings>:</font></a>")
               end if

 


End Function

 

    if jd100_page_count > 0 then
    '获取本页需要用到的id============================================
    Sql="select "&jd100_ID&" from "& jd100_biao & " " & jd100_order
    set Rs=server.createobject("adodb.recordset")
    Rs.open Sql,Conn,1,1

 

       Rs.PageSize = jd100_page_n '每页显示记录数
       Rs.AbsolutePage = Page  '当前页数

 

    For i=1 to Rs.pagesize
    If Rs.eof then exit for 
        if(i=1)then
            SqlId=Rs(jd100_ID)
        else
            SqlId=SqlId &","&Rs(jd100_ID) ' 获取的ID
        end if
    Rs.movenext
    Next
    '获取本页需要用到的id结束============================================
    end if
         sql="select  "&jd100_zd&" From "&jd100_biao&" where "&jd100_ID&" in("& SqlId &") "&jd100_order&" "
         Set Rs=Conn.Execute(sql)
%>


 『3楼』作者:极品人渣 时间:2005-6-21 17:44:36
普通分页 记录在十万条以下 使用rs.move指针法

 


<%  
          dim jd100_ID,jd100_biao,jd100_zd,jd100_order

 

          'jd100_ID="id"  '索引ID
          jd100_biao="aa" '表名
          jd100_zd="id,ipone,ipend,come" '字段名
          jd100_order="ORDER BY ID DESC"   '倒序
          jd100_order=" "   '不排序
          'call jd100_select()
          'call jd100_page()
          'call jd100_do()
          'call jd100_loop()

 

          '精点一百的简单分页
         dim jd100_page_count,jd100_page_n,jd100_page_x,page,jd100_page_y,jd100_page_page2
         dim jd100_page_k,jd100_page_End_Id,jd100_page_view

 

         jd100_page_n=20 '每页显示留言数
         jd100_page_x=5  '每页显示的页数

 

         '在这里要加一条半断 参数是否是数字

 

         page = Request.QueryString("page") '得到当前页码
         if page="" or Not IsNumeric(Page) then page=1
         page =int(page)

 

         jd100_page_count=conn.execute("select COUNT(id) as jd100_page_count From "&jd100_biao&" ")("jd100_page_count")

 

        
         if jd100_page_count/jd100_page_n = int(jd100_page_count/jd100_page_n) then '计算出分页数
         jd100_page_y=int(jd100_page_count/jd100_page_n)
         else
         jd100_page_y=int(jd100_page_count/jd100_page_n)+1
         end if
         if page>jd100_page_y then page=jd100_page_y 

 

         jd100_page_page2= int(page/jd100_page_x)

 

         if page/jd100_page_x>jd100_page_page2 then jd100_page_page2=jd100_page_page2+1
         jd100_page_k=jd100_page_page2*jd100_page_x
         if jd100_page_k>jd100_page_y then jd100_page_k=jd100_page_y

 

         '打开字段'

 

         if page=1 then
         sql="select top "&jd100_page_n&" "&jd100_zd&" From "&jd100_biao&" "&jd100_order&" "
         else
          jd100_page_End_Id=jd100_page_n*page
          sql="select top "&jd100_page_End_Id&" "&jd100_zd&" From "&jd100_biao&" "&jd100_order&" "
         end if
         Set Rs=Conn.Execute(sql)
         if Page>1 then RS.Move jd100_page_End_Id-jd100_page_n  '移动到当前记录
%>

 


显示页码

 

              有<%=jd100_page_count %>条 <%=page %>/<%=jd100_page_y %>页 分页
                <% if jd100_page_page2>1 then %>
                <a href="?page=1"><font face=webdings>9</font></a>
                <a href="?page=<%=jd100_page_page2*jd100_page_x-jd100_page_x%>"><font face=webdings>3</font></a>
                <% end if %>
                <% For jd100_page_m =jd100_page_page2*jd100_page_x-(jd100_page_x-1) To jd100_page_k %>
                [<a href="?page=<%=jd100_page_m%>"><%=jd100_page_m%></a>]
                <% Next %>
                <% if jd100_page_page2*jd100_page_x < jd100_page_y then %>
                <a href="?page=<%=jd100_page_m%>"><font face=webdings>4</font></a>
                <a href="?page=<%=jd100_page_y %>"><font face=webdings>:</font></a>
                <% end if %>

 


 『4楼』作者:极品人渣 时间:2005-6-21 17:46:14
标题:传统分页

<%  
            Set Rs = Server.CreateObject("ADODB.RecordSet")
                          Sql="Select * From gdnews   Order By date Desc"
                          Rs.Open Sql,Conn,1,1
                         
              TotalRecord=Rs.RecordCount
        '每页显示的记录数
        Rs.PageSize =20
        PageSize = Rs.PageSize
        PageCount=Rs.PageCount
        if rs.bof  and rs.eof then
        CM="当前没有记录"
        else
        page=request("page")
        '保证页数在 1-总页数 之间
        if page=""or clng(page)<1 then page=1
        if clng(page)>pagecount then page=pagecount
       
        If page="" Then 
            Rs.AbsolutePage = 1
        Else
            Rs.AbsolutePage = page
        End If
        end if

 

              %>

 

 


                <% do while i < PageSize And not rs.eof  '显示记录

 


附加说明
rdate=formatdatetime(rs("date"),2) '格式化时间
if DATEDIFF("d",rdate,date()) <=3  then '三天内的信息,显红色
rdate="<font color=""#FF0000"">("&rdate&")</font> <img src=""images/new.gif"" >"
else
rdate="<font color=""#666666"">("&rdate&")</font>"
end if
rname=rs("title") & " "
%>

 

'内容

 

<%
rs.movenext
i=i+1
loop
Rs.Close
Set Rs = Nothing
%>

 


    分页:
      <!--显示页码-->
      <% For m = 1 To PageCount
    %>
      <% if page=m then %>
      [<%=m%>]
      <% else %>
      [<a href="?page=<%=m %" target="_parent"><%=m%></a>]
      <% end if %>
      <%  Next %>

 

 『5楼』作者:极品人渣 时间:2005-6-21 17:47:02
标题:分页显示页码函数

function jd100page(jd100_page_count,jd100_page_n,jd100_page_x) '参数: 总记录数,每页显示记录,每页显示页数
         dim jd100_page_k,jd100_page_y,jd100_page_page2
         '计算页数相关
         if jd100_page_count/jd100_page_n = int(jd100_page_count/jd100_page_n) then
         jd100_page_y=int(jd100_page_count/jd100_page_n)
         else
         jd100_page_y=int(jd100_page_count/jd100_page_n)+1
         end if
         if page>jd100_page_y then page=jd100_page_y 
         jd100_page_page2= int(page/jd100_page_x)
         if page/jd100_page_x>jd100_page_page2 then jd100_page_page2=jd100_page_page2+1

 

         jd100_page_k=jd100_page_page2*jd100_page_x

 

         if jd100_page_k>jd100_page_y then jd100_page_k=jd100_page_y              

 

'输出页码
               jd100page= "有"&jd100_page_count&" 条 "& page &"/"& jd100_page_y &"页 分页 "
               if jd100_page_page2>1 then
               jd100page=jd100page& "<a href='?page=1' class='jd100'><font face=webdings>9</font></a>"
               jd100page=jd100page& " <a href='?page="& jd100_page_page2*jd100_page_x-jd100_page_x &"' class='jd100'><font face=webdings>3</font></a>"
               end if
               For jd100_page_m =jd100_page_page2*jd100_page_x-(jd100_page_x-1) To jd100_page_k
               if jd100_page_m=page then
               jd100page=jd100page&" [<a href='?page="& jd100_page_m &"' class='jd100'><font color=#ff0000>"& jd100_page_m &"</font></a>]"
               else
               jd100page=jd100page&" [<a href='?page="& jd100_page_m &"' class='jd100'>"& jd100_page_m &"</a>]"
               end if
               Next
               if jd100_page_page2*jd100_page_x < jd100_page_y then
               jd100page=jd100page&" <a href='?page="&jd100_page_m&"' class='jd100'><font face=webdings>4</font></a>"
               jd100page=jd100page&" <a href='?page="&jd100_page_y&"' class='jd100'><font face=webdings>:</font></a>"
               end if
end function

 

 『6楼』作者:极品人渣 时间:2006-7-20 17:10:44
标题:id分页法
'必要过程

sub viewpage(p_c,p_n,p_x,p_p,p_cls)
         ' 总记录,显示记录数,显示页数,当前页,传替参数
         dim p_k,p_y,p_p2,p_p3,p_m
    if p_c/p_n = int(p_c/p_n) then
   p_y=int(p_c/p_n)
   else
   p_y=int(p_c/p_n)+1
   end if
         if p_p>p_y then p_p=p_y 
         p_p2= int(p_p/p_x)
   if p_p/p_x>p_p2 then p_p2=p_p2+1
   p_k=p_p2*p_x
   if p_k>p_y then p_k=p_y              
 
      response.write "<form name='formpage' method='post' action='' style='margin-bottom:0;margin-top:0'>"
      response.write "共"& p_c &"条 每页:"&p_n&"  第"& p_p &"/"& p_y &"页 "
               if p_p2>1 then
               response.write "<a href='?page=1&"&p_cls&"' class='jd100'><font face=webdings>9</font></a>"
               response.write " <a href='?page="& p_p2*p_x-p_x &"&"&p_cls&"' class='jd100'><font face=webdings>3</font></a>"
               end if
               For p_m =p_p2*p_x-(p_x-1) To p_k
               if p_m=p_p then
               response.write " [<a href='?page="& p_m &"&"&p_cls&"' class='jd100'><font color=#ff0000>"& p_m &"</font></a>]"
      else
               response.write " [<a href='?page="& p_m &"&"&p_cls&"' class='jd100'>"& p_m &"</a>]"
               end if
      Next
               if p_p2*p_x < p_y then
               response.write " <a href='?page="&p_m&"&"&p_cls&"' class='jd100'><font face=webdings>4</font></a>"
            response.write " <a href='?page="&p_y&"&"&p_cls&"' class='jd100'><font face=webdings>:</font></a>"
               end if
      response.write " <input name='page' type='text' value='' size='2' maxlength='8' style='border:1px double rgb(88,88,88);font:9pt'> <input type='submit' name='Submit' value='go' style='border:1px double rgb(88,88,88);font:9pt;height:19px;'></form>"

End sub

Function repageid(jbiao,n,p,jorder)
' 表名,取N个记录,当前页,条件
repageid=0
    dim pageRs
         set pageRs=server.createobject("adodb.recordset")
      pageRs.open "select id from "& jbiao & " " & jorder,conn,1,1,&H0001
   if pageRs.eof then pageRs.close:exit function
   pageRs.PageSize = n
         pageRs.AbsolutePage = p
 dim SqlId
 dim j
 For j=1 to n
 If pageRs.eof then exit for 
  if(j=1)then
   SqlId=pageRs(0)
  else
   SqlId=SqlId &","&pageRs(0)
  end if
 pageRs.movenext
 Next
 repageid=SqlId
 pagers.close
 set pagers=nothing
End Function
Function reSZ(jdNumer)
         reSZ=jdNumer
         if reSZ="" or Not IsNumeric(reSZ) then reSZ=1
         reSZ =int(reSZ)
   if reSZ<1 then reSZ=1
End Function

'调用时

'分类参数
 const n=16 '每页显示
 page=Request.QueryString("page")'获取页
 if Request.Form("page")<>"" then page=Request.Form("page")
 page=reSZ(page)
 rscount=conn.Execute("select count(id) from news "&sid&" ",0,1)(0)
 if page>rscount/n then
      page=int(rscount/n)
  if (rscount/n)>page then page=page+1
 end if
 dim sqlid'获取分页ID
 sqlid=repageid("news",n,page,""&sid&" order by id desc")
  with response
  '.write sl
 Set rs=conn.Execute("select title,datetime,hits,id from news where id in("&sqlid&") "&sl&" order by id desc",0,1)

'显示页数
  if rscount>n then call viewpage(rscount,n,5,page,"type="&request("type"))'调用分页

posted @ 2009-07-04 16:26  DELPHI&.NET初学者[TECSOON WENDAY]  阅读(219)  评论(0编辑  收藏  举报