天涯之外

导航

ASP构造大数据量的分页SQL语句

Function GetPageSql(TblName,FldName,PageSize,PageIndex,OrderType,StrWhere)
    Dim StrTemp,StrSql,StrOrder
    '根据排序方式生成相关代码
    If OrderType = 0 Then
        StrTemp = "> (Select Max([" & FldName & "])"
        StrOrder = " Order By [" & FldName & "] Asc"
    Else
        StrTemp = "< (Select Min([" & FldName & "])"
        StrOrder = " Order By [" & FldName & "] Desc"
    End If
   
    '若是第1页则无须复杂的语句
    If PageIndex = 1 Then
        StrTemp = ""
        If StrWhere <> "" Then
            Strtmp = " Where " & StrWhere
        End If
        StrSql = "Select Top " & PageSize & " * From [" & TblName & "]" & Strtmp & StrOrder
    Else        '若不是第1页,构造sql语句
        StrSql = "Select Top " & PageSize & " * From [" & TblName & "] Where [" & FldName & "]" & StrTemp & _
        " From (Select Top " & (PageIndex-1) * PageSize & " [" & FldName & "] From [" & TblName & "]"
        If StrWhere <> "" Then
            StrSql = StrSql & " Where " & StrWhere
        End If
        StrSql = StrSql & StrOrder & ") As Tbltemp)"
        If StrWhere <> "" Then
            StrSql = StrSql & " And " & StrWhere
        End If
        StrSql = StrSql & StrOrder
    End If
    GetPageSql = StrSql        '返回sql语句
End Function
'Response.Write(GetPageSql("Message","MessageID",10,1,0,""))

posted on 2009-07-13 15:29  天涯之外  阅读(272)  评论(0编辑  收藏  举报