Oracle分页类

一、文件:  Cls_OracleShowoPage.asp

<%
 '说明:    使用此程序请保留以下信息
 '名称:    fengzheng Oracle 分页类
 '联系:    wangzj0306@126.com
 '类名:   Cls_OracleShowoPage
 '        (包括一个分页导航的 JS:showo_page.js)
 '
 '一、特点:
 '    1、优点:每次只取出相应的 PageSize 条记录,使用简单;
 '    2、缺点:在查询记录时,只能用SELECT * FROM , 并且只能对单表进行查询,如果是多表查询,则应该把子查询另外写,再
 '             用 IN 的方法,把条件加入到  WHERE  里面去;
 
 '二、相关说明:
 '    1、PageSize                         设置每一页显示的记录数
 '    2、Conn                             设置  Connection
 '    3、Sql                              设置表名、条件、排序方式
 '                                        如:tablename$id>10 and name='33'$id desc
 '    4、JsUrl                            设置分页导航文件   showo_page.js   的相对路径
 '    5、GetRecCount                      私有成员,不能访问, 由  Sql  得到记录数
 '    6、RecCount                         通过调用   GetRecCount()  得到记录总数
 '    7、ResultSet                        返回一个二维数组
 '    8、ShowPage(ByVal strTableWidth)    输出一个分页导航的表格,参数用来设置表格的宽度
 '                                        如:ShowPage("98%"),ShowPage("780")
 '    9、CheckNum                         私有成员,不能访问,判断  Page  参数的有效性
                 
 '三、例子:
 '    1、把类文件和分页导航文件进行拷贝;
 '    2、加入如下代码:
 '    <%
 '        Dim ors
 '        Set ors=new Cls_OracleShowoPage      '创建对象
 '        With ors
 '         .Conn=DbConn                         '设置   Connection
 '         .PageSize=20                         '设置每一页显示的记录数
 '         .Sql="TableName$WhereStr$orderstr"   '设置SQL,如:.Sql="SEP.scd_sep_tel$tel_tel like '%7322%'$tel_order desc"
 '         .JsUrl=""                            '设置分页导航文件   showo_page.js   的相对路径,在同一目录下,不在同一目录,则用相对路径如:.JsUrl="../"
 '        end With
 '        Rs=ors.ResultSet()                      '得到一个二维数组的结束集
 '        For i=0 to Ubound(Rs,2)                 '在这里设置自己的输出效果
 '            Response.Write(Rs(0,i) & "<br>")    '第一列,为序号列
 '            Response.Write(Rs(1,i) & "<br>")    '第二列,为数据表中的第一列
 '            Response.Write(Rs(2,i) & "<br>")    '第三列,为数据表中的第二列
 '            ........
 '        Next
 '
 '        Call ors.ShowPage("760")                '输出一个分页导航的表格,参数用来设置表格的宽度
 '     %'>
 '
 '
 '
 
 
 
%>

<%
Class Cls_OracleShowoPage
 Private Showo_PageSize,Showo_CurrPage
 Private Showo_Conn
 Private Showo_Table,Showo_Where,Showo_Order
 Private Showo_JsUrl
 Private Showo_RecCount,Showo_PageCount,GetRecCount_Sql,ResultSet_Sql,Showo_Sql
 '================================================================
 ' Class_Initialize 类的初始化
 '================================================================
 Private Sub Class_Initialize
  Showo_PageSize=10 '设定每页记录条数的默认值为10
  Showo_CurrPage=CheckNum(Trim(Request("Page")),1,-1) '获取当前面的值
  Showo_Order="" '默认排序
  Showo_Where="" '默认条件
 End Sub
 '================================================================
 ' PageSize 设置每一页记录条数,默认10记录
 '================================================================
 Public Property Let PageSize(ByVal intPageSize)
  Showo_PageSize=CheckNum(intPageSize,Showo_PageSize,-1)
 End Property
 '================================================================
 ' Conn 得到数据库连接对象
 '================================================================
 Public Property Let Conn(ByVal objConn)
  Set Showo_Conn=objConn
 End Property
 
 '================================================================
 ' Sql 取得sql所需表字段条件排序,输入:字段,表,条件,排序,主ID
 '================================================================
 Public Property Let Sql(ByVal str_sql) 
  Showo_Sql=Split(str_sql,"$")
  Showo_Table=Showo_Sql(0)
  Showo_Where=Showo_Sql(1)
  Showo_Order=Showo_Sql(2)
 End Property
 '================================================================
 ' JsUrl 取得showo_page.js的路径
 '================================================================
 Public Property Let JsUrl(ByVal strJsUrl)
  Showo_JsUrl=strJsUrl
 End Property
 
 '================================================================
 ' GetRecCount 取得记录总数
 '================================================================
 Private Function GetRecCount()
  Dim RecordCount
  GetRecCount_Sql="SELECT Count(*) FROM " & Showo_Table
  If Showo_Where<>"" Then
   GetRecCount_Sql=GetRecCount_Sql & " WHERE " & Showo_Where
  End If
  set RsCount=server.CreateObject("adodb.recordset")
  RsCount.Open GetRecCount_Sql,Showo_Conn,1,1,&H0001
  RecordCount=clng(RsCount(0))
  RsCount.Close
  set RsCount=nothing
  GetRecCount=RecordCount
 End Function
 '================================================================
 ' RecCount 记录总数
 '================================================================
 Public Property Get RecCount()
    RecCount=GetRecCount()
 End Property
 '================================================================
 ' ResultSet 返回分页后的记录集
 '================================================================
 Public Property Get ResultSet()
  ResultSet=Null
  Showo_RecCount=RecCount()'记录总数
  '当前页
  If Showo_RecCount>0 Then'如果总数大于0
      '得到页数
   If (Showo_RecCount mod Showo_PageSize)=0 Then
    Showo_PageCount=Showo_RecCount/Showo_PageSize
   Else
    Showo_PageCount=Showo_RecCount/Showo_PageSize+1
   End If
   '当前页
   Showo_CurrPage=CheckNum(Showo_CurrPage,1,Showo_PageCount)
   '根据当前页号,及每页显示记录数,从数据库中取出相应的记录的SQL
      ResultSet_Sql="select * from (select rownum r_n,temptable.* from ("
      ResultSet_Sql=ResultSet_Sql & "SELECT * FROM " & Showo_Table
      If Showo_Where<>"" Then
          ResultSet_Sql=ResultSet_Sql & " WHERE " & Showo_Where
      End If
      If Showo_Order<>"" then
          ResultSet_Sql=ResultSet_Sql & " ORDER BY " & Showo_Order
      End If
      ResultSet_Sql=ResultSet_Sql & ") temptable ) where r_n between " & (Showo_CurrPage-1)*Showo_PageSize+1 & " and " & Showo_CurrPage*Showo_PageSize
   '得到RS
   Set Showo_Rs = Server.CreateObject("adodb.RecordSet")
   Showo_Rs.Open ResultSet_Sql,Showo_Conn,1,1,&H0001
   ResultSet=Showo_Rs.GetRows(Showo_PageSize)
   Showo_Rs.close
   Set Showo_Rs=Nothing
  End If 
 End Property
 '================================================================
 ' ShowPage 得到分页导航
 '================================================================
 Public Sub ShowPage(ByVal strTableWidth)
  '----------得到分页导航-----------------------------
  Response.Write("<!--分页导航表格开始-->" & vbCrLf)
  Response.Write("<table width=" & strTableWidth & " border=""0"" align=""center"" cellpadding=""2"" cellspacing=""2"">" & vbCrLf)
  Response.Write("  <tr>" & vbCrLf)
  Response.Write("    <td>" & vbCrLf)
  Response.Write("      <Script Language=""JavaScript"" type=""text/JavaScript"" src=" & Showo_JsUrl & "showo_page.js></Script>" & vbCrLf)
  Response.Write("      <Script Language=""JavaScript"">" & vbCrLf)
  Response.Write("          ShowoPage(""<table style='BORDER-COLLAPSE: collapse' borderColor='#111111' height='10' cellSpacing='0' cellPadding='0' width='95%' border='0'><tr><td vAlign='bottom'  style='font-family: Verdana,宋体; font-size: 11.5px; line-height: 15px'>"",""</td></tr></table>"",""页次:<font color='red'>"",""</font>/"","""",""&nbsp;"",""&nbsp;每页 <font color='red'>"",""</font> 条&nbsp;"",""&nbsp;共计:<font color='red'>"",""</font> 条记录</td><td vAlign='bottom' align='right'  style='font-family: Verdana,宋体; font-size: 11.5px; line-height: 15px'>"",""<font face=webdings>9</font>"",""<font face=webdings>7</font>"",""<font face=webdings>8</font>"",""<font face=webdings>:</font>"",""&nbsp;&nbsp;跳转:"",""<font color='orange'>["",""]</font>"","""","""",""<font color='red'>"",""</font>"","""",""""," & Showo_RecCount & "," & Showo_PageSize & ",2)")
  Response.Write(vbCrLf & "      </Script>" & vbCrLf)
  Response.Write("    </td>" & vbCrLf)
  Response.Write("  </tr>" & vbCrLf)
  Response.Write("</table>" & vbCrLf)
  Response.Write("<!--分页导航表格结束-->" & vbCrLf)
  '----------得到分页导航-----------------------------
 End Sub
 
 '================================================================
 ' 输入:检查字段,开始数字(默认数字),结束数字(为-1则不检查大小)
 '================================================================
 Private Function CheckNum(ByVal strStr,ByVal intStartNum,ByVal intEndNum)
  CheckNum=intStartNum
  If IsNumeric(strStr) Then CheckNum=Clng(strStr)       
  If intEndNum>-1Then
   If CheckNum<intStartNum Then CheckNum=intStartNum
   If CheckNum>intEndNum Then CheckNum=intEndNum
  End If
 End Function
 '================================================================
 ' Class_Terminate 类注销
 '================================================================
 Private Sub Class_Terminate()
  If IsObject(Showo_Conn) Then
   Showo_Conn.Close
   Set Showo_Conn=Nothing
  End If
 End Sub
End Class
%>

二、showo_page.js

(JS文件,在叶子js分页样式基础上做了修改;QQ:311673,MSN:ishows@msn.com,http://www.showo.com)

/**
*=================================================================
*名称:   叶子js分页样式
*Name:   ShowoPage With JavaScript
*RCSfile:  showo_page.js
*Revision:  0.04Beta
*Author:  yezi(叶子)
*Date:   2005-01-21 17:50:10
*Description: js分页样式,显示上一页下一页的翻页结果
*Contact:  QQ:311673,MSN:ishows@msn.com,http://www.showo.com
*=================================================================
*/

var url,CurrPage,re,CurrentPage,iurl,FirstPageUrl,PrevPageUrl,NextPageUrl,LastPageUrl,PageCount,prevpage,nextpage,PageStart,PageEnd,i,ipage;
 url=""+document.location;
 if (url.indexOf("Page=")==-1) {
  CurrPage=1;
 }
 else {
  re=/(/S.*)(Page=/d*)(/S.*|/S*)/g;
  CurrentPage=url.replace(re,"$2");
  CurrentPage=CurrentPage.replace("Page=","");
  //re=/(?:/S{1,}Page=|/D.*)/g;
  //CurrentPage=url.replace(re,"");
  url=url.replace("&Page="+CurrentPage,"");
  url=url.replace("Page="+CurrentPage+"&","");
  url=url.replace("Page="+CurrentPage,"");
 }
 url+=(url.indexOf("?")==-1)?"?":"&";
 url=url.replace("?&","?");
 url=url.replace("&&","&");
function FromatPage(str,StartNum,EndNum) {
 str+="";
 if (str.length>=1) {
  mynum=parseInt(str,10);
  if (isNaN(mynum)) {
   mynum=StartNum;
  }
  else {
   if (EndNum>-1) {
    mynum=(mynum<StartNum)?StartNum:mynum;
    mynum=(mynum>EndNum)?EndNum:mynum;
   }
   else {
    mynum=(mynum<StartNum)?StartNum:mynum;
   }
  }
 }
 else {
  mynum=StartNum;
 }
 return (mynum);
}
function CheckPage(iPageCount) {
 url+='&Page=';
 url=url.replace("?&","?");
 url=url.replace("&&","&");
 ipage=showoPage.value;
 location.href(url+FromatPage(ipage,1,iPageCount));
}
function ShowoPage(Tabstart,Tabend,CurrPageFont1,CurrPageFont2,PageCountFont1,PageCountFont2,PrePageFont1,PrePageFont2,RecCountFont1,RecCountFont2,FirstFont,PrevFont,NextFont,LastFont,Jump,PageNumFont1,PageNumFont2,PageNumFont3,PageNumFont4,LinkFont1,LinkFont2,LinkFont3,LinkFont4,iRecCount,iRecPerPage,iPageNum) {
 RecCount=FromatPage(iRecCount,0,-1);
 RecPerPage=FromatPage(iRecPerPage,1,-1);
 PageNum=FromatPage(iPageNum,0,-1);
 PageCount=(RecCount%RecPerPage==0)?(RecCount/RecPerPage):(FromatPage((RecCount/RecPerPage),0,RecCount)+1);
 CurrPage=(PageCount>0)?(FromatPage(CurrentPage,1,PageCount)):(FromatPage(CurrentPage,0,PageCount));
 prevpage=FromatPage((CurrPage-1),1,PageCount); 
 nextpage=FromatPage((CurrPage+1),1,PageCount);   
 if (CurrPage<=1&&PageCount<=1) {
  FirstPageUrl="&nbsp;"+LinkFont3+FirstFont+LinkFont4+"&nbsp;";
  PrevPageUrl="&nbsp;"+LinkFont3+PrevFont+LinkFont4+"&nbsp;";
  NextPageUrl="&nbsp;"+LinkFont3+NextFont+LinkFont4+"&nbsp;";
  LastPageUrl="&nbsp;"+LinkFont3+LastFont+LinkFont4+"&nbsp;";
 }
 else if (CurrPage==1&&PageCount>1) {
  FirstPageUrl="&nbsp;"+LinkFont3+FirstFont+LinkFont4+"&nbsp;";
  PrevPageUrl="&nbsp;"+LinkFont3+PrevFont+LinkFont4+"&nbsp;";
  NextPageUrl="&nbsp;<A href=/""+url+"Page="+nextpage+"/">"+LinkFont1+NextFont+LinkFont2+"</A>&nbsp;";
  LastPageUrl="&nbsp;<A href=/""+url+"Page="+PageCount+"/">"+LinkFont1+LastFont+LinkFont2+"</A>&nbsp;";
 }
 else if (CurrPage==PageCount) {
  FirstPageUrl="&nbsp;<A href=/""+url+"Page=1/">"+LinkFont1+FirstFont+LinkFont2+"</A>&nbsp;";
  PrevPageUrl="&nbsp;<A href=/""+url+"Page="+prevpage+"/">"+LinkFont1+PrevFont+LinkFont2+"</A>&nbsp;";
  NextPageUrl="&nbsp;"+LinkFont3+NextFont+LinkFont4+"&nbsp;";
  LastPageUrl="&nbsp;"+LinkFont3+LastFont+LinkFont4+"&nbsp;";
 }
 else {
 FirstPageUrl="&nbsp;<A href=/""+url+"Page=1/">"+LinkFont1+FirstFont+LinkFont2+"</A>&nbsp;";
  PrevPageUrl="&nbsp;<A href=/""+url+"Page="+prevpage+"/">"+LinkFont1+PrevFont+LinkFont2+"</A>&nbsp;";
  NextPageUrl="&nbsp;<A href=/""+url+"Page="+nextpage+"/">"+LinkFont1+NextFont+LinkFont2+"</A>&nbsp;";
  LastPageUrl="&nbsp;<A href=/""+url+"Page="+PageCount+"/">"+LinkFont1+LastFont+LinkFont2+"</A>&nbsp;";
 }
 PageStart=FromatPage((CurrPage-PageNum),1,PageCount); 
 PageEnd=FromatPage((CurrPage+PageNum),1,PageCount); 
 document.write (CurrPageFont1+CurrPage+CurrPageFont2+PageCountFont1+PageCount+PageCountFont2+PrePageFont1);
 document.write (RecPerPage+PrePageFont2+RecCountFont1+RecCount+RecCountFont2+FirstPageUrl+PrevPageUrl);
 if (CurrPage>=1) {
  for (i=PageStart;i<=PageEnd;i++) {
   if (i!=CurrPage) {
    document.write ("&nbsp;<A href=/""+url+"Page="+i+"/">"+PageNumFont1+i+PageNumFont2+"</A>&nbsp;");
   }
   else {
    document.write ("&nbsp;"+PageNumFont3+i+PageNumFont4+"&nbsp;");
   }
  }
 }
 document.write (NextPageUrl+LastPageUrl+Jump);
 //1、用户输入方式
 //document.write ("<INPUT type=/"text/" id=/"showoPage/" size=/"5/" maxlength=/"10/" οnkeydοwn=/"if (event.keyCode==13) CheckPage("+PageCount+")/">");
 //document.write ("<INPUT type=/"button/" value=/"Go/" onClick=/"CheckPage("+PageCount+")/">"+Tabend);
 //2、用户选择方式
 document.write ("<select id=/"showoPage/" onChange=/"CheckPage("+PageCount+")/">");
 for(i=1;i<=PageCount;i++) {
  if(i==CurrPage)
  {
   document.write ("<option value=" + i + " selected>" + i + "</option>")
  }
  else
  {
   document.write ("<option value=" + i + ">" + i + "</option>")
  }
 }
 document.write ("</select>"+Tabend);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值