带置顶的分页SQL

昨天帮朋友处理一个带置顶的分页页面。

数据库:Access
方法:在文章表中增加一个是否置顶字段:A_IsTop(Boolean),将A_IsTop和格式化为“0000000000”的字段组合在一块后再以倒序方式排序

SQL语句如下:

Sub OpenData()
	'On Error Resume Next
	Conn.Open "provider=microsoft.jet.oledb.4.0;data source=" & server.mappath(db)
	If Err.Number<>0 Then
		Response.Write "用户数据库连接失败!请联系管理员解决!"
		Response.End()
	End If
End Sub

Sub CloseConn()
	Conn.Close
	Set Conn=nothing
End Sub

Sub creatobj(obj) '建立recordset对象
	set obj=server.CreateObject("adodb.recordset")
End sub
sub clearobj(obj)
	if Lcase(typename(obj))="recordset" then
		obj.close
		set obj=nothing
	end if
end sub


nPageSize=10 '每页显示条数
pageno=request("pageno")
If Not IsNumeric(PageNo) or isEmpty(PageNo) Then
	PageNo=1
End If
if PageNo<1 Then PageNo=1

pageno=clng(pageno)
Call OpenDatabase()  '打开数据库
Call CreatObj(rs)    '建立游标

'统计文章总数
Sql="Select Count(*) As zs From Article"
rs.open sql,conn,1,1
rsCount=rs("zs")
rs.close
'计算总页数
PageAll=(rsCount-(rsCount mod nPageSize))/nPageSize
if (rsCount mod nPageSize)>0 then PageAll=PageAll+1
if PageAll=0 then PageAll=1
if Pageno>pageall then pageno=PageAll

'生成分页语句
Sql="Select Top "& nPageSize &" * From Article " & _
    "Where (Cstr(abs(a_istop))+format(cstr(id),'0000000000'))<=(" & _
    "Select Iif(IsNull(Min(n.ID)),0,Min(n.ID)) From (" & _
    "Select Top "& (Cint(PageNo)-1)*nPageSize+1 &" cstr(abs(a_istop))+format(cstr(id),'0000000000') as ID From Article Order by cstr(abs(a_istop))+format(cstr(id),'0000000000') Desc" & _
    ") n" & _
    ") Order By cstr(abs(a_istop))+format(cstr(id),'0000000000') Desc"

rs.open sql,conn,1,1

'输出查询到的文章列表

Call ClearObj(rs) '清除rs游标
Call CloseConn()  '关闭数据库

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值