⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cls_vbspage.asp

📁 asp分类支持多级
💻 ASP
字号:
<%
Class Cls_vbsPage
	Private oConn		'连接对象
	Private iRecordCount
	Private iRecType	'RecType 取记录总数(>0为赋值或者固定值,0执行count设置存cookies,-1执行count不设置cookies)
	Private iPageSize	'页次
	Private sPageName	'地址栏页数参数名
	Private sDbType		'数据库类型,AC(access),MSSQL(SQL SERVER2000),MYSQL(mysql,sqlite),PGSQL(PostGreSql)
	Private sJsUrl		'Cls_jsPage.js的路径
	Private sField		'字段名
	Private sTable		'表名
	Private sCondition	'条件,不需要where
	Private sOrderBy	'排序,不需要order by,需要asc或者desc
	Private sPKey		'主键,必写

	Private Sub Class_Initialize
		iRecordCount=0
		iRecType=0
		iPageSize=10
		sPageName="Page"
		sDbType="AC"
		sJsUrl=""
		sField=" * "
	End Sub

	Public Property Set Conn(ByRef o)
		Set oConn=o
	End Property

	Public Property Let RecType(ByVal i)
		iRecType=CheckNum(i,0,0,iRecType,0) 
	End Property
	
	Public Property Let PageSize(ByVal i)
		iPageSize=CheckNum(i,0,0,iPageSize,0) 
	End Property

	Public Property Let PageName(ByVal s)
		sPageName=IIf(Len(s)<1,sPageName,s)
	End Property

	Public Property Let DbType(ByVal s)
		sDbType=UCase(IIf(Len(s)<1,sDbType,s))
	End Property

	Public Property Let JsUrl(ByVal s)
		sJsUrl=IIf(Len(s)<1,sJsUrl,s)
	End Property

	Public Property Let PKey(ByVal s)
		sPKey=s
	End Property

	Public Property Let Field(ByVal s)
		sField=IIf(Len(s)<1,sField,s)
	End Property

	Public Property Let Table(ByVal s)
		sTable=s
	End Property

	Public Property Let Condition(ByVal s)
		sCondition=IIf(Len(s)>2," WHERE " & s,"")
	End Property

	Public Property Let OrderBy(ByVal s)
		sOrderBy=IIf(Len(s)>4," ORDER BY " & s,"")
	End Property

	Public Property Get RecordCount()
		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
		iRecordCount=i
		RecordCount=i
	End Property

	Public Property Get ResultSet()
		s=Null
		i=RecordCount()
		If i>0 Then
			iPageCount=(i+iPageSize-1)\iPageSize
			iPageCurr=CheckNum(Request.QueryString(sPageName),1,1,1,iPageCount)
			Select Case sDbType
				Case "MSSQL"
					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"
					ResultSet_Sql="SELECT " & sField & " FROM " & sTable & " " & sCondition & " " & sOrderBy & " LIMIT " & (iPageCurr-1)*iPageSize & "," & iPageSize
					Set Rs=oConn.Execute(ResultSet_Sql)
				Case Else
					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

	Private Sub Class_Terminate()
		If IsObject(oConn) Then oConn.Close:Set oConn=Nothing
	End Sub

	'================================================================
	' 输入:检查字符,是否有最小值,是否有最大值,最小值(默认数字),最大值
	'================================================================
	Private Function CheckNum(ByVal s,ByVal b1,ByVal b2,ByVal i1,ByVal i2)
		Dim i
		s=Left(Trim("" & s),32)
		If IsNumeric(s) Then
			i=CDbl(s)
			i=IIf(b1=1 And i<i1,i1,i)
			i=IIf(b2=1 And i>i2,i2,i)
		Else
			i=i1
		End If
		CheckNum=i
	End Function

	'================================================================
	' 输入:简化条件判断
	'================================================================
	Private Function IIf(ByVal b,ByVal s1,ByVal s2)
		IIf=s2
		If b Then IIf=s1
	End Function

	'================================================================
	' 上下页部分
	'================================================================
	Public Sub ShowPage()
		Response.Write "<Script Language='JavaScript' type='text/JavaScript' src='"&sJsUrl&"Cls_jsPage.js'></Script>"
		Response.Write "<Script Language='JavaScript' type='text/JavaScript'>"
		Response.Write "var s= new Cls_jsPage("&iRecordCount&","&iPageSize&",3,'s');"
		Response.Write "s.setPageSE('"&sPageName&"=','');"
		Response.Write "s.setPageInput('"&sPageName&"');"
		Response.Write "s.setUrl('');"
		Response.Write "s.setPageFrist('首页','<<');"
		Response.Write "s.setPagePrev('上页','<');"
		Response.Write "s.setPageNext('下页','>');"
		Response.Write "s.setPageLast('尾页','>>');"
		Response.Write "s.setPageText('[{$PageNum}]','第{$PageNum}页');"
		Response.Write "s.setPageTextF(' {$PageTextF} ',' {$PageTextF} ');"
		Response.Write "s.setPageSelect('{$PageNum}','第{$PageNum}页');"
		Response.Write "s.setPageCss('','','');"
		Response.Write "s.setHtml('共{$RecCount}记录 页次{$Page}/{$PageCount} 每页{$PageSize}条 {$PageFrist} {$PagePrev} {$PageText} {$PageNext} {$PageLast} {$PageInput} {$PageSelect}');"
		Response.Write "s.Write();"
		Response.Write "</Script>"
	End Sub

End Class%>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -