一、根据自动编号ID每页的最大最小值来分页,函数GetMaxIdForPager获取每页的最大ID值,GetMinIdForPager获取每页的最小ID值,参数说明:

database:表名
perpagerecs:每页记录数
curpage:当前页码
orderby:排序方式asc or desc
wherestr:where语句
orderbycolumn:排序字段
 

 
  
  1. ''获取当前页记录的最大ID  
  2. function GetMaxIdForPager(database,perpagerecs,curpage,orderby,wherestr,orderbycolumn)  
  3.   if wherestr="" then  
  4.     wherestr="1=1" 
  5.   end if  
  6.   if curpage>1 then  
  7.       tempage=curpage-1  
  8.       temprecs=tempage*perpagerecs*1  
  9.       temprecs2=curpage*perpagerecs*1  
  10.       if orderby="desc" then  
  11.          temp_minid=conn.execute("select min(id) from "&database&" where id in(select top "&temprecs&" id from "&database&" where "&wherestr&" order by "&orderbycolumn&" desc)")(0)  
  12.          maxid=conn.execute("select top 1 id from "&database&" where id<"&temp_minid&" and "&wherestr&" order by "&orderbycolumn&" desc")(0)  
  13.      else  
  14.         maxid=conn.execute("select max(id) from "&database&" where id in(select top "&temprecs2&" id from "&database&" where "&wherestr&" order by "&orderbycolumn&" asc)")(0)  
  15.      end if  
  16.    elseif curpage=1 then  
  17.     if conn.execute("select count(*) from  "&database&" where "&wherestr&"")(0)>0 then  
  18.          if orderby="desc" then  
  19.            sql="select top 1 id from "&database&" where "&wherestr&" order by "&orderbycolumn&" desc" 
  20.            maxid=conn.execute("select top 1 id from "&database&" where "&wherestr&" order by "&orderbycolumn&" desc")(0)  
  21.          else  
  22.            maxid=conn.execute("select max(id) from "&database&" where id in(select top "&perpagerecs&" id from "&database&" where "&wherestr&" order by "&orderbycolumn&" asc)")(0)  
  23.         end if  
  24.     else  
  25.      maxid=1  
  26.    end if  
  27.    end if  
  28.  GetMaxIdForPager=maxid  
  29. end function  
  30. ''获取当前页记录的最小ID  
  31. function GetMinIdForPager(database,perpagerecs,curpage,orderby,wherestr,orderbycolumn)  
  32.   if wherestr="" then  
  33.     wherestr="1=1" 
  34.   end if  
  35.   if curpage>1 then  
  36.       tempage=curpage-1  
  37.       temprecs=tempage*perpagerecs*1  
  38.       temprecs2=curpage*perpagerecs*1  
  39.       if orderby="desc" then  
  40.         minid=conn.execute("select min(id) from "&database&" where id in(select top "&temprecs2&" id from "&database&" where "&wherestr&" order by "&orderbycolumn&" desc)")(0)   
  41.       else  
  42.         temp_maxid=conn.execute("select max(id) from "&database&" where id in(select top "&temprecs&" id from "&database&" where "&wherestr&" order by "&orderbycolumn&" asc)")(0)  
  43.         minid=conn.execute("select top 1 id from "&database&" where id>"&temp_maxid&" and "&wherestr&" order by "&orderbycolumn&" asc")(0)  
  44.       end if  
  45.   elseif curpage=1 then  
  46.     if conn.execute("select count(*) from "&database&" where "&wherestr&"")(0)>0 then  
  47.      if orderby="desc" then   
  48.        minid=conn.execute("select min(id) from "&database&" where id in(select top "&perpagerecs&" id from "&database&" where "&wherestr&" order by "&orderbycolumn&" desc)")(0)   
  49.      else  
  50.       minid=conn.execute("select top 1 id from "&database&" order by "&orderbycolumn&" asc")(0)  
  51.      end if  
  52.     else  
  53.      minid=1  
  54.    end if  
  55.   end if  
  56.   GetMinIdForPager=minid  
  57. end function 

使用方法,例:

 
  
  1. wherestr="UserId="&request.cookies("memberid")&" and PostId<>0" 
  2. tolrecs=conn.execute("select count(*) from bbs_forum where "&wherestr&"")(0)  
  3. maxid=GetMaxIdForPager("bbs_forum",5,2,"desc",wherestr,"id")  
  4. minid=GetMinIdForPager("bbs_forum",5,2,"desc",wherestr,"id")sql="select * from bbs_forum where id>="&minid&" and id<="&maxid&" and "&wherestr&" order by id desc"set rs_u=server.CreateObject("ADODB.Recordset")  
  5. rs_u.open sql,conn,1,1  
  6. if not rs_u.eof then  
  7.    do while not rs_u.eof  
  8.      ....  
  9.    rs_u.movenext  
  10.   loop  
  11. end if  
  12. rs_u.close