查询翻页优化第1/2页_ASP CLASS类

复制代码 代码如下:

<SCRIPT language=VBSCRIPT RUNAT=SERVER>

'//---- COCOON_自定义类_翻页优化代码 ----//'
Class cc_db_Pager
    '--------------------------------
    '     COCOON Db_Pager 类 (Ver: 1.02)
    '     作者: Sunrise_Chen (sunrise_chen@msn.com)
    '     请保留此信息,谢谢。
    '     
    '     2003/06 修正一个错误,描述:如果ID不唯一,将产生多条重复记录的错误。
    '                           2003.5
    '--------------------------------

    '//-------------------- 定义变量 --------------------//'
    Private sTableName        '//表名
    Private sSqlString        '//自定义Sql语句
    Private aCondition()        '//查询条件(数组)
    Private sCondition        '//查询条件(字符串)
    Private iPage        '//当前页码
    Private iPageSize        '//每页记录数
    Private iPageCount        '//总页数
    Private iRecCount        '//当前查询条件下的记录数
    Private iTotalRecCount    '//总记录数
    Private sFields        '//输出的字段名
    Private sOrderBy        '//排序字符串
    Private sSql        '//当前的查询语句
    Private sPkey        '//主键
    Private oConn        '//连接对象
    Private iDefPageSize        '//默认每页显示的记录数
    Private sProjectName        '/项目名
    Private sVersion        '/版本号
    Private bShowError        '//是否显示错误信息

    '//-------------------- 事件、方法 --------------------//'
    '//类初始化事件
    Private Sub Class_Initialize()
        ReDim aCondition(-1)
        iPage        = 1
        iRecCount        = Null
        iTotalRecCount    = Null
        iPageCount        = Null
        bShowError        = True
        iPageSize        = 10
        sFields        = "*"
        sPkey        = "ID"
        sCondition        = ""
        sOrderBy        = ""
        sSqlString        = ""
        sProjectName    = "COCOON 类系列 数据库翻页优化"
        sVersion        = "1.02"
    End Sub

    '//类结束事件
    Private Sub Class_Terminate()
        Set oConn = Nothing
    End Sub

    '//错误处理
    Public Sub doError(s)
            Dim sTmp
            sTmp = CLng(Rnd() * 100)
            Response.write( "<DIV STYLE='WIDTH:760;font-size:9pt;cursor:hand'>" )
            Response.write( "<LABEL ONCLICK='ERRORDIV"&sTmp&".style.display=(ERRORDIV"&sTmp&".style.display==""""?""none"":"""")'>" )
            Response.write( "<SPAN STYLE='BACKGROUND-COLOR:#CCCC00;COLOR:WHITE;'>〖 CC_db_Pager 提示信息 〗</SPAN><BR></LABEL>" )
            Response.write( "<DIV ID='ERRORDIV"&sTmp&"' STYLE='DISPLAY:NONE;WIDTH:100%;" )
            Response.write( "BORDER: 1PX SOLID #CCCC00;PADDING:5;overflow:hidden;text-overflow:ellipsis;'><NOBR>" )
            Response.write( "<SPAN STYLE='COLOR:RED'>Description</SPAN>: " & s & "<BR>" )
            Response.write( "<SPAN STYLE='COLOR:RED'>Provider</SPAN>: " & sProjectName )
            Response.write( "  <SPAN STYLE='COLOR:RED'>Version</SPAN>: " & sVersion & "<BR>" )
            Response.write( "</NOBR></DIV></DIV><BR>" )
    End Sub

    '//产生分页的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

End Class

</SCRIPT>

当前1/2页 12下一页阅读全文

时间: 2024-09-24 06:45:54

查询翻页优化第1/2页_ASP CLASS类的相关文章

查询翻页优化第1/2页

复制代码 代码如下: <SCRIPT language=VBSCRIPT RUNAT=SERVER> '//---- COCOON_自定义类_翻页优化代码 ----//' Class cc_db_Pager     '--------------------------------     '     COCOON Db_Pager 类 (Ver: 1.02)     '     作者: Sunrise_Chen (sunrise_chen@msn.com)     '     请保留此信息,

深入分析着陆页优化误区 提升着陆页优化水平

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 对于网站运营来说,着陆页的优化无疑是极为关键的环节,因为我们通过优化提升网站排名,最终的目的就是要提升流量转化率,从而为网站赢得利润.可是现在很多站长在优化时,更多重视网站的排名优化,却对于网站的着陆页优化往往存在着一定的误区,特别是以长尾关键词来吸引用户点击,进入到网站内页,并以此来获得流量转化,在这些以内页为核心的着陆页优化方面,

浅谈如何进行网站内页优化

也许吸引用户的不是网站内页,但是我想说留住用户的一定是内页,如果说整个网站是金字塔,那么网站的内页就是塔底,作为网站的排名基垫,我想说网站的内页优化很重要. 对网站内页进行优化,其实说复杂也复杂,说简单也简单,主要看你从哪个角度去分析对待.这里笔者从简单层面上把网站的内页优化分成针对两大块,即产品内页优化以及文章内页优化. 什么是网站内页 广义上讲,即从网站外部看网站内页就是网站除了首页以外的所有页面就是内页,所以只要不是网站首页就是网站内页,不存在什么栏目页,专题页等的相关概念. 狭义上讲,即

力争做好网站栏目页优化 让栏目页成为网站链接核心

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网站的栏目页对于网站来说起到了承上启下的作用,假如一个网站没有栏目页,那么用户进入网站后不知道内容属于哪个方面的,假如网站没有栏目,那么搜索引擎蜘蛛进入网站抓取不知道应该从何开始,可以说网站的栏目页在网站中占据了核心的作用,而做好网站的栏目页优化就相当于为网站构建了一个全新的中枢神经.下面具体的谈谈网站的栏目页面如何才能够做好优化. 一.栏目

如何做好网站的单页优化

什么是单页优化?如何做好单页优化呢?单页优化指的是布局很简单的静态页面.在互联网初始阶段,大多数网站以单页的形式存在,因为单页寻在很大的缺陷,伴随着互联网的发展,逐渐退出了人们的视野,但是随着淘宝客等网站的兴起,单页优化再次出现在人们的视野中. 单页优化一定要有一定质量的内容支持和权重导向之下才有可能把排名做上去.单页优化在现在网站优化市场如火如荼的年代,有一定的难度,不过方法是死的, 人是活的,把一两种优化手段做到极致,往往最简单的方法就是最有效的方法.比如淘宝客很成功的案例,美丽说.蘑菇街等

ASP类库之查询翻页优化

<SCRIPT language=VBSCRIPT RUNAT=SERVER> ''//---- COCOON_自定义类_翻页优化代码 ----//'' Class cc_db_Pager ''-------------------------------- '' COCOON Db_Pager 类 (Ver: 1.02) '' 作者: Sunrise_Chen (sunrise_chen@msn.com) '' 请保留此信息,谢谢. '' '' 2003/06 修正一个错误,描述:如果ID不

(Oralce) Web翻页优化实例

web|翻页|优化 Web翻页优化实例 作者:Wanghai 环境: Linux version 2.4.20-8custom (root@web2) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #3 SMP Thu Jun 5 22:03:36 CST 2003 Mem: 2113466368 Swap: 4194881536 CPU:两个超线程的Intel(R) Xeon(TM) CPU 2.40GHz 优化前语句在mysql里面

从百度经验搜索权重高看其seo内页优化

做百度权重推广的朋友们,相信都有这个感受,就是百度站内外链越来越难做了.对于百度经验,虽然链接容易发布,很遗憾的是自从它在网址前加了nofollow但现在也至多是导流了.但是这不妨碍我们对百度经验产品进行分析,来帮助我们做好自己网站的seo内部优化工作. 为什么分析百度经验,因近期发现做的百度经验权重非常高.高过了同类的百度知道.下面就是一个例子:   而除了在网页搜索里显示的权重大外,在百度图片搜索同样的内容,排名靠前的依然是百度经验里的网页图片.这里需要指出的是百度知道目前不支持图片,所以在

网站排名优化:频道页优化

说的频道页优化,这其实是件不可小觑的的事情,它关系到你网站排名优化的好于否.之前小珍没有重视到这一点,今天在学习中看到一些学习资料发现自己竟然在建站之初忘了给自己网站做整体的布局.只是在频道页随便的放上几个词,每天更新文章就了事了.这样做即便是把网站首页优化到百度首页了,但是其他页面能够优化到首页的少之又少,这样的网站排名是不健康的.真正的seo优化做的好的,是大部分内页都能做到百度首页.也就是说只要你想到那些相关的词语你去百度搜索,大半都会有这个网站的文章页内页出现. 最近我就发现一个网站做的