數據庫: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() '關閉數據庫