""//产生分页的SQL语句 Public Function getSql() Dim iStart, iEnd Call makeCondition() iStart = ( iPage - 1 ) * iPageSize iEnd = iStart + iPageSize getSql = " Select DISTINCT " & sFields & " FROM ["&sTableName&"] " _ & " Where ["&sPKey&"] NOT IN ( " _ & " Select TOP "&iStart&" ["&sPKey&"] FROM ["&sTableName&"] " & sCondition & " " & sOrderBy & " " _ & " )" _ & " AND ["&sPKey&"] IN ( " _ & " Select TOP "&iEnd&" ["&sPKey&"] FROM ["&sTableName&"] " & sCondition & " " & sOrderBy & " " _ & " )" _ & " " & sOrderBy & " " End Function
""//产生条件字符串 Private Sub makeCondition() If UBound(aCondition)>=0 Then sCondition = " Where " & Join(aCondition, " AND ") End If End Sub
""//计算总记录数(带条件) Private Sub CaculateRecCount() On Error Resume Next Dim oRs Call makeCondition() Set oRs = oConn.Execute( "Select COUNT(["&sPKey&"]) FROM [" & sTableName & "]" & sCondition ) If Err Then doError Err.Description Response.End() End If iRecCount = oRs.Fields.Item(0).value Set oRs = Nothing End Sub
""//计算总记录数(不带条件) Private Sub CaculateTotalRecCount() On Error Resume Next Dim oRs Set oRs = oConn.Execute( "Select COUNT(["&sPKey&"]) FROM [" & sTableName & "]" ) If Err Then doError Err.Description Response.End() End If iTotalRecCount = oRs.Fields.Item(0).value Set oRs = Nothing End Sub
""//计算页数 Private Sub CaculatePageCount() If isNull(iRecCount) Then CaculateRecCount() If iRecCount = 0 Then iPageCount = 0 : Exit Sub iPageCount = Abs( Int( 0 - (iRecCount / iPageSize) ) ) End Sub
""//增加条件 Public Sub AddCondition(s) If Len(s)<0 Then Exit Sub ReDim Preserve aCondition(UBound(aCondition)+1) aCondition(UBound(aCondition)) = s End Sub
""//版本信息 Public Function Information() doError "Coding by <A HREF=""MAILTO:sunrise_chen@msn.com"">Sunrise_Chen</A> @ <A HREF=""http://www.ccopus.com"">http://www.ccopus.com<;/A> ." End Function
""//-------------------- 输入属性 --------------------//"" ""//定义连接对象 Public Property Set ActiveConnection(o) Set oConn = o End Property
""//定义查询表名 Public Property Let TableName(s) sTableName = s End Property
""//定义需要输出的字段名 Public Property Let Fields(s) sFields = s End Property
""//定义主键 Public Property Let Pkey(s) sPkey = s End Property
""//定义排序规则 Public Property Let OrderBy(s) sOrderBy = " ORDER BY " & s & " " End Property
""//定义每页的记录条数 Public Property Let PageSize(s) iPageSize = s If Not isNumeric(iPageSize) Then iPageSize = iDefaultPageSize If CLng(iPageSize)<1 Then iPageSize = iDefaultPageSize End Property
""//定义当前页码 Public Property Let Page(s) iPage = s If Not isNumeric(iPage) Then iPage = 1 If CLng(iPage)<1 Then iPage = 1 Call CaculatePageCount() If CLng(iPage)>CLng(iPageCount) And iPageCount>0 Then iPage = iPageCount End Property
""//自定义查询语句 Public Property Let Sql(s) sSqlString = s End Property
""//-------------------- 输出属性 --------------------//"" ""//取得当前条件下的记录数 Public Property Get RecordCount If isNull(iRecCount) Then CaculateRecCount() RecordCount = iRecCount End Property
""//取得当前页码 Public Property Get Page Page = iPage End Property
""//取得当前页码 Public Property Get AbsolutePage AbsolutePage = iPage End Property
""//取得当前查询的条件 Public Property Get Condition If Len(sCondition)<1 Then makeCondition() Condition = sCondition End Property
""//取得总的记录数 Public Property Get TotalRecordCount If isNull(iTotalRecCount) Then CaculateTotalRecCount() TotalRecordCount = iTotalRecCount End Property
""//取得总页数 Public Property Get PageCount If isNull(iPageCount) Then CaculatePageCount() PageCount = iPageCount End Property
""//得到分页后的记录集 Public Property Get Recordset On Error Resume Next sSql = getSql() Set Recordset = oConn.Execute( sSql ) If Err Then If bShowError Then doError Err.Description If Len(sSqlString)>0 Then Set Recordset = oConn.Execute( sSqlString ) If Err Then doError Err.Description Response.End() End If Else doError Err.Description End If End If Err.Clear() End Property
""//版本信息 Public Property Get Version Version = sVersion End Property