添加收藏
 系统管理
 联系方式
  汉南在线网页设计Asp动态程序

asp 超强分页类 比传统分页提高速度100倍
作  者:匿名
关键字:分页



<%
'百万数据超强分页类~
'比传统分页提高速度100倍
'只使用 “select * from xxxx”格式的查询语句
'使用方法:把这个文件 include 到你要进行分页的页面
' Dim Pl 定义变量,任意定义
' Set Pl =  New AoaobPage 建立类的实例
' Pl.pagesize = 25 '每页显示个数
' Pl.SetPageTag = "id" '这是所有数据不会重复的数据库字段,一般为主键
' Pl.getconn = Db.Conn '这是数据库链接对象,根据自己的情况定义。
' Pl.getsql = Sql
' set Rs = Pl.getrs()'返回分页数据集
' For i=1 to 25
' If Rs.Eof Then Exit For
'  ......
' Next
' set Pl = Nothing
'版权所有 http://www.aoaob.com 欢迎转载~
'联系邮件 webmaster@aoaob.com

 

Const L_First="<font face=""webdings""><img src=""/images/to_r1_c1.gif"" border=""0"" /></font>" '定义第一页按钮显示样式
Const L_Prev="<font face=""webdings""><img src=""/images/to_r1_c2.gif"" border=""0"" /></font>" '定义前一页按钮显示样式
Const L_Next="<font face=""webdings""><img src=""/images/to_r1_c3.gif"" border=""0"" /></font>" '定义下一页按钮显示样式
Const L_Last="<font face=""webdings""><img src=""/images/to_r1_c4.gif"" border=""0"" /></font>" '定义最后一页按钮显示样式
Class AoaobPage
 Private Conn
 Private Rs
 Private Sql
 Private PageTag
 Private ThisPageSize '一页数据量
 Private RsNum '数据总量
 Private PageNum '页数
 Private ErrInfo
 Private PageUrl
 Private ThisPage '当前页面值
 Private IsRs '数据是否已经初始化
 Private ShowPage_info_ '分页导航缓存
 Public GetCurPageNum
 Public Int_CurPage
 Private Sub Class_Initialize '类初始化
  ThisPageSize = 10 '默认每页显示个数
  GetCurPageNum = 10
  PageTag = ""
  ShowPage_info_ = ""
  IsRs = false
  If Request("page")="" Then
   ThisPage=1
  ElseIf not(IsNumeric(Request("page"))) Then
   ThisPage=1
  ElseIf CInt(Trim(Request("page")))<1 Then
   ThisPage=1
  Else
   ThisPage=CInt(Trim(Request("page")))
  End If
  Int_CurPage = ThisPage
 End Sub
 
 '-----------------获取分页标识
 Public Property Let SetPageTag(intvalue)
  If intvalue <> "" Then
   PageTag = intvalue
  Else
   ErrInfo=ErrInfo & "分页标识的参数不正确"
   ShowError()
  End If
 End Property
 
 '-----------------
 Public Property Let PageSize(intvalue)
  If IsNumeric(intvalue) Then
   ThisPageSize=CLng(intvalue)
   GetCurPageNum = ThisPageSize
   If ThisPageSize < 1 Then ThisPageSize = 10
  Else
   ErrInfo=ErrInfo & "PageSize的参数不正确"
   ShowError()
  End If
 End Property
 
 '---------------返回每页个数
 Public Property Get PageSize
  If ThisPageSize="" or (not(IsNumeric(ThisPageSize))) Then
   PageSize=10 
  Else
   PageSize=ThisPageSize
  End If
 End Property
 
 '----------------得到数据库链接
 Public Property Let GetConn(sconn)
  Set Conn=sconn
 End Property
 
 '-----------------------得到Sql语句
 Public Property Let GetSQL(svalue)
  Sql=Lcase(svalue)
 End Property
 
 '-------------------打开数据库
 Private Sub OpenRs()
  Set Rs = Server.CreateObject("Adodb.RecordSet")
  Rs.Open Sql,Conn,1,1
 End Sub
  
 Public Property Get GetRs()
  If Sql = "" Then
   ErrInfo=ErrInfo & "Sql语句错误"
   ShowError()
  End If
  Dim RsNumSql,RsNum_
  RsNumSql = Replace(Sql,"*","count(*)")
  If InStr(RsNumSql," order by ") > 0 Then RsNumSql = left(RsNumSql,InStrRev(RsNumSql," order by ") -1)
  If Not IsObject(Conn) Then
   ErrInfo=ErrInfo & "数据库链接对象错误!"
   ShowError()
  End If
  
  
  set RsNum_ = Conn.Execute(RsNumSql)
  RsNum = RsNum_(0)
  RsNum_.Close
  Set RsNum_ = Nothing
  If RsNum mod ThisPageSize = 0 Then
   PageNum = RsNum \ ThisPageSize
  Else
   PageNum = RsNum \ ThisPageSize + 1
  End If
  If ThisPage > PageNum Then ThisPage = PageNum
  If(PageTag = "") Then
   ErrInfo=ErrInfo & "分页标识的参数不正确!"
   ShowError()
  End If
  If ThisPage = 1 Then
   Sql = Replace(Sql,"*","Top "&ThisPageSize&" *")
  ElseIf ThisPage > 1 Then
   Sql = Replace(Replace(Sql,"*","Top "&ThisPageSize&" *"),"where","where "&PageTag&" not in ("&Replace(Sql,"*","Top "&(ThisPageSize*(ThisPage-1))&" "&PageTag)&") and")
  End If
  Call OpenRs()
  IsRs = true
  Set GetRs = Rs
 End Property
 
 
 Public Function ShowPage_info()
  Dim result,i,m
  PageUrl = GetUrl()
  If Not IsRs Then
   ErrInfo=ErrInfo & "数据执行错误!"
   ShowError()
  End If
  If ShowPage_info_ <> "" Then
   ShowPage_info = ShowPage_info_
   Exit Function
  End If
  result = ""
  If PageNum > 0 Then
   If PageNum = 1 Then
   Else
    '第一页按钮
    If ThisPage = 1 Then
     result = result & L_First & vbCrLf
    Else
     result = result & "<a href="""&PageUrl&"1"">"&L_First&"</a>" & vbCrLf
    End If
    '上一数字列按钮
    If ThisPage - 9 > 0 Then
     result = result & "<a href="""&PageUrl&ThisPage-9&""">"&L_Prev&"</a>" & vbCrLf
    Else
     If ThisPage = 1 Then
      result = result & L_Prev & vbCrLf
     Else
      result = result & "<a href="""&PageUrl&"1"">"&L_Prev&"</a>" & vbCrLf
     End If
    End If
    '数字列按钮
    If ThisPage > 5 and ThisPage + 5 < PageNum Then
     For i = 1 to 9
      m = ThisPage - 5 + i
      If m > 0 and m <= PageNum Then
       If m = ThisPage Then
        result = result & "<strong  class=""divline_hover"">&nbsp;"&m&"&nbsp;</strong>&nbsp;"&vbCrLf
       Else
        result = result & "<a href="""&PageUrl&m& """ class=""divline"">&nbsp;"&m&"&nbsp;</a>&nbsp;"&vbCrLf
       End If
      End If
     Next
    ElseIf ThisPage <= 5 and ThisPage + 5 < PageNum Then
     For i = 1 to 9
      If i <= PageNum Then
       If i = ThisPage Then
        result = result & "<strong  class=""divline_hover"">&nbsp;"&i&"&nbsp;</strong>&nbsp;"&vbCrLf
       Else
        result = result & "<a href="""&PageUrl&i& """ class=""divline"">&nbsp;"&i&"&nbsp;</a>&nbsp;"&vbCrLf
       End If
      End If
     Next
    ElseIf ThisPage + 5 >= PageNum Then
     For i = 1 to 9
      If PageNum-9+i > 0 Then
       If PageNum-9+i = ThisPage Then
        result = result & "<strong  class=""divline_hover"">&nbsp;"&PageNum-9+i&"&nbsp;</strong>&nbsp;"&vbCrLf
       Else
        result = result & "<a href="""&PageUrl&PageNum-9+i& """ class=""divline"">&nbsp;"&PageNum-9+i&"&nbsp;</a>&nbsp;"&vbCrLf
       End If
      End If
     Next
    End If
    '下一数字列按钮
    If ThisPage + 9 < PageNum Then
     result = result & "<a href="""&PageUrl&ThisPage+9&""">"&L_Next&"</a>" & vbCrLf
    Else
     If ThisPage = PageNum or ThisPage + 5 > PageNum Then
      result = result & L_Next & vbCrLf
     Else
      result = result & "<a href="""&PageUrl&PageNum&""">"&L_Next&"</a>" & vbCrLf
     End If
    End If
    '最后一页按钮
    If ThisPage = PageNum or ThisPage + 5 > PageNum Then
     result = result & L_Last & vbCrLf
    Else
     result = result & "<a href="""&PageUrl&PageNum&""">"&L_Last&"</a>" & vbCrLf
    End If
    result = result & "&nbsp;"&ThisPage&"/"&PageNum&"&nbsp;总共:"&RsNum&"&nbsp;"&ThisPageSize&"/页"&vbCrLf
   End If
  Else
   result = "没有您要找的数据"
  End If
  ShowPage_info_ = result
  ShowPage_info = result
 End Function
 
 
 Private function GetURL()
  Dim strUrl,tmp_URL,i,j,search_str,result_url,str_params,str_lparams,str_rparams
  search_str="page="
  strUrl=Request.Servervariables("URL")
  strUrl=split(strUrl,"/")
  i=UBound(strUrl,1)
  tmp_URL=strUrl(i)'得到当前页文件名
  str_params=replace(Trim(Request.Servervariables("QUERY_STRING")),"&_=","")
  If str_params="" Then
   result_url=tmp_URL & "?page="
  Else
   If InstrRev(str_params,search_str)=0 Then
    result_url=tmp_URL & "?" & str_params &"&page="
   Else
    j=InstrRev(str_params,search_str)-2
    If j=-1 Then
     result_url=tmp_URL & "?page="
    Else
     str_lparams=Left(str_params,j)
     str_rparams=right(str_params,len(str_params)-j-1)
     if InStr(str_rparams,"&")<>0 then
      str_rparams=right(str_rparams,len(str_rparams)-InStr(str_rparams,"&")+1)
     else
      str_rparams = ""
     end if
     result_url=tmp_URL & "?" & str_lparams&str_rparams&"&page="
    End If
   End If
  End If
  GetURL=result_url
 End function
 
 '--------------------销毁类
 Private Sub Class_Terminate 
  Obj_Rs.close
  Set Obj_Rs=nothing
  Obj_Conn.close
  set Obj_Conn = nothing
 End Sub
 
 '------------------错误提示
 Private Sub ShowError()
  If ErrInfo <> "" Then
   Response.Write("" & ErrInfo & "")
   Response.End()
  End If
 End Sub
 
End Class
%>



来源:网络
阅读:10
日期:2008-8-29

【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:把网页中的电话号码生成图片的ASP程序
下一篇:ASP读取XML数据文件的方法

  >> 相关文章
  没有相关文章。

5.12汶川大地震遇难同胞默哀 | 汉南在线总站 | 网站建设 | BT电影下载 | 汉南在线博客 | 流行购商城

授权使用:汉南在线 http://hnzx.hzwz.net/
经营许可证:陕ICP备05000109号 Powered by:汉南在线  
Copyright (c) 2002-2008 汉南在线. All Rights Reserved .