您现在的位置是:网站首页> 编程资料编程资料
叶子asp分页类_ASP CLASS类_
2023-05-25
242人已围观
简介 叶子asp分页类_ASP CLASS类_
名称: 叶子asp分页类
Name: ShowoPage(vbs class)
RCSfile: ReadMe.txt
Revision: 0.12.20051114.f
Author: Yehe(叶子)
Released: 2005-11-14 09:40:13
Descript: ASP分页类,支持access/mssql/mysql/sqlite
Contact: QQ:311673 MSN:myehe@msn.com GT:mmyehe@gmail.com
WebSite: http://www.yehe.org http://www.showo.com
------------------------------------------------
Licenses:
本程序遵循GPL协议.
协议原文地址:http://www.gnu.org/licenses/licenses.cn.html#GPL
------------------------------------------------
Thanks:
可洛: 感谢mssql分页核心部分
Arbiter: 感谢部分分页思路
才子: 感谢推广
foxty: 感谢分页思路
------------------------------------------------
Install:
1.具体调用方法可以看demo的asp文档.
2.mssql存储过程版的请先执行sp_Util_Page.sql文件添加存储过程.
3.sp调用方法:
exec sp_Util_Page 440000,4,10,''MID'',''MID,ip1,ip2,country,city'',''tbTempPage'',''1=1'',''mid asc''
记录条数(已有值:序外部赋值,0执行count),当前页数,每页记录数,主键,字段,表,条件(不需要where),排序(不需要order by,需要asc和desc字符)
如果不按主键排序,则排序赋值里面不能出现主键字符.
------------------------------------------------
Release:
0.12
1.取text字段类型bug修正
2.存储过程bug修正
3.代码修正
0.11
1.存储过程加了非主键排序下的分页
2.去掉了mssql的非存储过程版分页
0.10:
1.条件简化
2.存储过程优化
0.09:
1.排序判断部分优化
0.08:
1.vbs bug修正
0.07:
1.bug修正,包括vbs类和js
0.06Beta:
1.js浏览器兼容优化
2.类几个函数的bug修正
0.05Beta:
1.全面代码优化,mysql/sqlite支持
2.参数输入方式修改
0.04Beta:
1.做到调用代码一样适应多种数据库集成分页
2.js去掉了表单,支持静态提交
3.加上了存储过程
0.03Beta:
1.公开发布的显示为0.02,其实为0.03,分为ac版类,mssql版类发布
2.js的bug修正
3.写成了类,进一步方便调用
0.02Beta:
1.加上对mssql的支持
2.封装成了函数版,方便调用
3.js文件的优化
0.01Beta:
1.没有写成函数,只是找到了比较快的ac分页方法
2.分页样式用js显示
------------------------------------------------
File:
db/IP.mdb access测试数据库
db/IP mssql备份测试数据库
Cls_vbsPage.asp 分页类
Cls_jsPage.js js分页样式
sp_Util_Page.sql mssql存储过程
demoAC.asp ac分页调用示范
demoMSSQL.asp mssql调用示范
demoMSSQL_SP.asp mssql存储过程调用示范
Cls_vbsPage.asp
<%
Class Cls_vbsPage
Private oConn ''连接对象
Private iPagesize ''每页记录数
Private sPageName ''地址栏页数参数名
Private sDbType
''数据库类型,AC为access,MSSQL为SQL SERVER2000存储过程版,MYSQL为mysql,PGSQL为PostGreSql
Private iRecType ''记录总数(>0为另外取值再赋予或者固定值,0执行count设置存cookies,-1执行count不设置cookies)
Private sJsUrl ''Cls_jsPage.js的路径
Private sField ''字段名
Private sTable ''表名
Private sCondition ''条件,不需要where
Private sOrderBy ''排序,不需要order by,需要asc或者desc
Private sPkey ''主键,必写
Private iRecCount
''================================================================
'' Class_Initialize 类的初始化
''================================================================
Private Sub Class_Initialize
iPageSize=10
sPageName="Page"
sDbType="AC"
iRecType=0
sJsUrl=""
sField=" * "
End Sub
''================================================================
'' Conn 得到数据库连接对象
''================================================================
Public Property Set Conn(ByRef Value)
Set oConn=Value
End Property
''================================================================
'' PageSize 设置每一页记录条数,默认10记录
''================================================================
Public Property Let PageSize(ByVal intPageSize)
iPageSize=CheckNum(intPageSize,0,0,iPageSize,0)
End Property
''================================================================
'' PageName 地址栏页数参数名
''================================================================
Public Property Let PageName(ByVal strPageName)
sPageName=IIf(Len(strPageName)<1,sPageName,strPageName)
End Property
''================================================================
'' DbType 得到数据库类型
''================================================================
Public Property Let DbType(ByVal strDbType)
sDbType=UCase(IIf(Len(strDbType)<1,sDbType,strDbType))
End Property
''================================================================
'' RecType 取记录总数(>0为赋值或者固定值,0执行count设置存cookies,-1执行count不设置cookies适用于搜索)
''================================================================
Public Property Let RecType(ByVal intRecType)
iRecType=CheckNum(intRecType,0,0,iRecType,0)
End Property
''================================================================
'' JsUrl 取得Cls_jsPage.js的路径
''================================================================
Public Property Let JsUrl(ByVal strJsUrl)
sJsUrl=strJsUrl
End Property
''================================================================
'' Pkey 取得主键
''================================================================
Public Property Let Pkey(ByVal strPkey)
sPkey=strPkey
End Property
''================================================================
'' Field 取得字段名
''================================================================
Public Property Let Field(ByVal strField)
sField=IIf(Len(strField)<1,sField,strField)
End Property
''================================================================
'' Table 取得表名
''================================================================
Public Property Let Table(ByVal strTable)
sTable=strTable
End Property
''================================================================
'' Condition 取得条件
''================================================================
Public Property Let Condition(ByVal strCondition)
s=strCondition
sCondition=IIf(Len(s)>2," WHERE "&s,"")
End Property
''================================================================
'' OrderBy 取得排序
''================================================================
Public Property Let OrderBy(ByVal strOrderBy)
s=strOrderBy
sOrderBy=IIf(Len(s)>4," ORDER BY "&s,"")
End Property
''================================================================
'' RecCount 修正记录总数
''================================================================
Public Property Get RecCount()
If iRecType>0 Then
i=iRecType
Elseif iRecType=0 Then
i=CheckNum(Request.Cookies("ShowoPage")(sPageName),1,0,0,0)
s=Trim(Request.Cookies("ShowoPage")("sCond"))
IF i=0 OR sCondition<>s Then
i=oConn.Execute("SELECT COUNT("&sPkey&") FROM "&sTable&" "&sCondition,0,1)(0)
Response.Cookies("ShowoPage")(sPageName)=i
Response.Cookies("ShowoPage")("sCond")=sCondition
End If
Else
i=oConn.Execute("SELECT COUNT("&sPkey&") FROM "&sTable&" "&sCondition,0,1)(0)
End If
iRecCount=i
RecCount=i
End Property
''================================================================
'' ResultSet 返回分页后的记录集
''================================================================
Public Property Get ResultSet()
s=Null
''记录总数
i=iRecCount
''当前页
If i>0 Then
iPageCount=Abs(Int(-Abs(i/iPageSize)))''页数
iPageCurr=CheckNum(Request.QueryString(sPageName),1,1,1,iPageCount)''当前页
Select Case sDbType
Case "MSSQL" ''sqlserver2000数据库存储过程版
Set Rs=server.CreateObject("Adodb.RecordSet")
Set Cm=Server.CreateObject("Adodb.Command")
Cm.CommandType=4
Cm.ActiveConnection=oConn
Cm.CommandText="sp_Util_Page"
Cm.parameters(1)=i
Cm.parameters(2)=iPageCurr
Cm.parameters(3)=iPageSize
Cm.parameters(4)=sPkey
Cm.parameters(5)=sField
Cm.parameters(6)=sTable
Cm.parameters(7)=Replace(sCondition," WHERE ","")
Cm.parameters(8)=Replace(sOrderBy," ORDER BY ","")
Rs.CursorLocation=3
Rs.LockType=1
Rs.Open Cm
Case "MYSQL" ''MYSQL数据库
ResultSet_Sql="SELECT "&sField&" FROM "&sTable&" "&sCondition&" "&sOrderBy&" LIMIT "&(iPageCurr-1)*iPageSize&","&iPageSize
Set Rs=oConn.Execute(ResultSet_Sql)
Case Else ''其他情况按最原始的方法处理(AC同理)
Set Rs = Server.CreateObject ("Adodb.RecordSet")
ResultSet_Sql="SELECT "&sField&" FROM "&sTable&" "&sCondition&" "&sOrderBy
Rs.Open ResultSet_Sql,oConn,1,1,&H0001
Rs.AbsolutePosition=(iPageCurr-1)*iPageSize+1
End Select
s=Rs.GetRows(iPageSize)
Rs.close
Set Rs=Nothing
End If
ResultSet=s
End Property
''================================================================
'' Class_Terminate 类注销
''================================================================
Private Sub Class_Terminate()
If IsObject(oConn) Then oConn.Close:Set oConn=Nothing
End Sub
''================================================================
'' 输入:检查字符,是否有最小值,是否有最大值,最小值(默认数字),最大值
''================================================================
Private Function CheckNum(ByVal strStr,ByVal blnMin,ByVal blnMax,ByVal intMin,ByVal intMax)
Dim i,s,iMi,iMa
s=Left(Trim(""&strStr),32):iMi=intMin:iMa=intMax
If IsNumeric(s) Then
i=CDbl(s)
i=IIf(blnMin=1 And i i=IIf(blnMax=1 And i>iMa,iMa,i)
Else
i=iMi
End If
CheckNum=i
End Function
''================================================================
'' 输入:简化条件判断
''================================================================
Private Function IIf(ByVal blnBool,ByVal strStr1,ByVal strStr2)
Dim s
If blnBool Then
s=strStr1
Else
s=strStr2
End If
IIf=s
End Function
''================================================================
'' 上下页部分
''================================================================
Public Sub ShowPage()%>
Name: ShowoPage(vbs class)
RCSfile: ReadMe.txt
Revision: 0.12.20051114.f
Author: Yehe(叶子)
Released: 2005-11-14 09:40:13
Descript: ASP分页类,支持access/mssql/mysql/sqlite
Contact: QQ:311673 MSN:myehe@msn.com GT:mmyehe@gmail.com
WebSite: http://www.yehe.org http://www.showo.com
------------------------------------------------
Licenses:
本程序遵循GPL协议.
协议原文地址:http://www.gnu.org/licenses/licenses.cn.html#GPL
------------------------------------------------
Thanks:
可洛: 感谢mssql分页核心部分
Arbiter: 感谢部分分页思路
才子: 感谢推广
foxty: 感谢分页思路
------------------------------------------------
Install:
1.具体调用方法可以看demo的asp文档.
2.mssql存储过程版的请先执行sp_Util_Page.sql文件添加存储过程.
3.sp调用方法:
exec sp_Util_Page 440000,4,10,''MID'',''MID,ip1,ip2,country,city'',''tbTempPage'',''1=1'',''mid asc''
记录条数(已有值:序外部赋值,0执行count),当前页数,每页记录数,主键,字段,表,条件(不需要where),排序(不需要order by,需要asc和desc字符)
如果不按主键排序,则排序赋值里面不能出现主键字符.
------------------------------------------------
Release:
0.12
1.取text字段类型bug修正
2.存储过程bug修正
3.代码修正
0.11
1.存储过程加了非主键排序下的分页
2.去掉了mssql的非存储过程版分页
0.10:
1.条件简化
2.存储过程优化
0.09:
1.排序判断部分优化
0.08:
1.vbs bug修正
0.07:
1.bug修正,包括vbs类和js
0.06Beta:
1.js浏览器兼容优化
2.类几个函数的bug修正
0.05Beta:
1.全面代码优化,mysql/sqlite支持
2.参数输入方式修改
0.04Beta:
1.做到调用代码一样适应多种数据库集成分页
2.js去掉了表单,支持静态提交
3.加上了存储过程
0.03Beta:
1.公开发布的显示为0.02,其实为0.03,分为ac版类,mssql版类发布
2.js的bug修正
3.写成了类,进一步方便调用
0.02Beta:
1.加上对mssql的支持
2.封装成了函数版,方便调用
3.js文件的优化
0.01Beta:
1.没有写成函数,只是找到了比较快的ac分页方法
2.分页样式用js显示
------------------------------------------------
File:
db/IP.mdb access测试数据库
db/IP mssql备份测试数据库
Cls_vbsPage.asp 分页类
Cls_jsPage.js js分页样式
sp_Util_Page.sql mssql存储过程
demoAC.asp ac分页调用示范
demoMSSQL.asp mssql调用示范
demoMSSQL_SP.asp mssql存储过程调用示范
Cls_vbsPage.asp
<%
Class Cls_vbsPage
Private oConn ''连接对象
Private iPagesize ''每页记录数
Private sPageName ''地址栏页数参数名
Private sDbType
''数据库类型,AC为access,MSSQL为SQL SERVER2000存储过程版,MYSQL为mysql,PGSQL为PostGreSql
Private iRecType ''记录总数(>0为另外取值再赋予或者固定值,0执行count设置存cookies,-1执行count不设置cookies)
Private sJsUrl ''Cls_jsPage.js的路径
Private sField ''字段名
Private sTable ''表名
Private sCondition ''条件,不需要where
Private sOrderBy ''排序,不需要order by,需要asc或者desc
Private sPkey ''主键,必写
Private iRecCount
''================================================================
'' Class_Initialize 类的初始化
''================================================================
Private Sub Class_Initialize
iPageSize=10
sPageName="Page"
sDbType="AC"
iRecType=0
sJsUrl=""
sField=" * "
End Sub
''================================================================
'' Conn 得到数据库连接对象
''================================================================
Public Property Set Conn(ByRef Value)
Set oConn=Value
End Property
''================================================================
'' PageSize 设置每一页记录条数,默认10记录
''================================================================
Public Property Let PageSize(ByVal intPageSize)
iPageSize=CheckNum(intPageSize,0,0,iPageSize,0)
End Property
''================================================================
'' PageName 地址栏页数参数名
''================================================================
Public Property Let PageName(ByVal strPageName)
sPageName=IIf(Len(strPageName)<1,sPageName,strPageName)
End Property
''================================================================
'' DbType 得到数据库类型
''================================================================
Public Property Let DbType(ByVal strDbType)
sDbType=UCase(IIf(Len(strDbType)<1,sDbType,strDbType))
End Property
''================================================================
'' RecType 取记录总数(>0为赋值或者固定值,0执行count设置存cookies,-1执行count不设置cookies适用于搜索)
''================================================================
Public Property Let RecType(ByVal intRecType)
iRecType=CheckNum(intRecType,0,0,iRecType,0)
End Property
''================================================================
'' JsUrl 取得Cls_jsPage.js的路径
''================================================================
Public Property Let JsUrl(ByVal strJsUrl)
sJsUrl=strJsUrl
End Property
''================================================================
'' Pkey 取得主键
''================================================================
Public Property Let Pkey(ByVal strPkey)
sPkey=strPkey
End Property
''================================================================
'' Field 取得字段名
''================================================================
Public Property Let Field(ByVal strField)
sField=IIf(Len(strField)<1,sField,strField)
End Property
''================================================================
'' Table 取得表名
''================================================================
Public Property Let Table(ByVal strTable)
sTable=strTable
End Property
''================================================================
'' Condition 取得条件
''================================================================
Public Property Let Condition(ByVal strCondition)
s=strCondition
sCondition=IIf(Len(s)>2," WHERE "&s,"")
End Property
''================================================================
'' OrderBy 取得排序
''================================================================
Public Property Let OrderBy(ByVal strOrderBy)
s=strOrderBy
sOrderBy=IIf(Len(s)>4," ORDER BY "&s,"")
End Property
''================================================================
'' RecCount 修正记录总数
''================================================================
Public Property Get RecCount()
If iRecType>0 Then
i=iRecType
Elseif iRecType=0 Then
i=CheckNum(Request.Cookies("ShowoPage")(sPageName),1,0,0,0)
s=Trim(Request.Cookies("ShowoPage")("sCond"))
IF i=0 OR sCondition<>s Then
i=oConn.Execute("SELECT COUNT("&sPkey&") FROM "&sTable&" "&sCondition,0,1)(0)
Response.Cookies("ShowoPage")(sPageName)=i
Response.Cookies("ShowoPage")("sCond")=sCondition
End If
Else
i=oConn.Execute("SELECT COUNT("&sPkey&") FROM "&sTable&" "&sCondition,0,1)(0)
End If
iRecCount=i
RecCount=i
End Property
''================================================================
'' ResultSet 返回分页后的记录集
''================================================================
Public Property Get ResultSet()
s=Null
''记录总数
i=iRecCount
''当前页
If i>0 Then
iPageCount=Abs(Int(-Abs(i/iPageSize)))''页数
iPageCurr=CheckNum(Request.QueryString(sPageName),1,1,1,iPageCount)''当前页
Select Case sDbType
Case "MSSQL" ''sqlserver2000数据库存储过程版
Set Rs=server.CreateObject("Adodb.RecordSet")
Set Cm=Server.CreateObject("Adodb.Command")
Cm.CommandType=4
Cm.ActiveConnection=oConn
Cm.CommandText="sp_Util_Page"
Cm.parameters(1)=i
Cm.parameters(2)=iPageCurr
Cm.parameters(3)=iPageSize
Cm.parameters(4)=sPkey
Cm.parameters(5)=sField
Cm.parameters(6)=sTable
Cm.parameters(7)=Replace(sCondition," WHERE ","")
Cm.parameters(8)=Replace(sOrderBy," ORDER BY ","")
Rs.CursorLocation=3
Rs.LockType=1
Rs.Open Cm
Case "MYSQL" ''MYSQL数据库
ResultSet_Sql="SELECT "&sField&" FROM "&sTable&" "&sCondition&" "&sOrderBy&" LIMIT "&(iPageCurr-1)*iPageSize&","&iPageSize
Set Rs=oConn.Execute(ResultSet_Sql)
Case Else ''其他情况按最原始的方法处理(AC同理)
Set Rs = Server.CreateObject ("Adodb.RecordSet")
ResultSet_Sql="SELECT "&sField&" FROM "&sTable&" "&sCondition&" "&sOrderBy
Rs.Open ResultSet_Sql,oConn,1,1,&H0001
Rs.AbsolutePosition=(iPageCurr-1)*iPageSize+1
End Select
s=Rs.GetRows(iPageSize)
Rs.close
Set Rs=Nothing
End If
ResultSet=s
End Property
''================================================================
'' Class_Terminate 类注销
''================================================================
Private Sub Class_Terminate()
If IsObject(oConn) Then oConn.Close:Set oConn=Nothing
End Sub
''================================================================
'' 输入:检查字符,是否有最小值,是否有最大值,最小值(默认数字),最大值
''================================================================
Private Function CheckNum(ByVal strStr,ByVal blnMin,ByVal blnMax,ByVal intMin,ByVal intMax)
Dim i,s,iMi,iMa
s=Left(Trim(""&strStr),32):iMi=intMin:iMa=intMax
If IsNumeric(s) Then
i=CDbl(s)
i=IIf(blnMin=1 And i
Else
i=iMi
End If
CheckNum=i
End Function
''================================================================
'' 输入:简化条件判断
''================================================================
Private Function IIf(ByVal blnBool,ByVal strStr1,ByVal strStr2)
Dim s
If blnBool Then
s=strStr1
Else
s=strStr2
End If
IIf=s
End Function
''================================================================
'' 上下页部分
''================================================================
Public Sub ShowPage()%>