欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

一个很强大的分页代码。

程序员文章站 2022-05-24 10:25:43
...

主要代码 set rowcount 30 select * from (select top 30 * from (select top 30 * from table order by id asc) z order by z.id desc) zz order by id asc 可以在任何程序里扩展 大家试试看。需要源码的找我。 程序是在asp 里测试的。已测试通过。 速度翻页

主要代码
set rowcount 30
select * from (select top 30 * from (select top 30 * from table order by id asc) z order by z.id desc) zz order by id asc


可以在任何程序里扩展
大家试试看。需要源码的找我。
程序是在asp 里测试的。已测试通过。
速度翻页速度很快。
AD:http://www.uutvs.com
' * 数据库转json  分页公用类库
' * EMAIL:wyonli@gmail.com QQ:82366788 $
' * $Author: Cason $
' * $Id: yl_clsjson.asp 6481 2011-11-26 00:21:46 Cason $
	property get order_name()
		dim o_sql,o_colum,olen,o_pai,i
		dim left_sql,right_sql
		o_sql = Cason_sql
		olen = instr(o_sql,"order")
		left_sql = left(o_sql,olen-1)
		right_sql = trim(mid(o_sql,olen))
		if olen = 0 then
			response.write "请设定排序方式!"
			response.end
		end if 
		o_sql = split(right_sql," ")
		for i = 0 to ubound(o_sql)
			if o_sql(i) = "by" then 
				if i>1 then
					o_sql(1) = "by"
					o_sql(i) = ""
				end if 
			end if 
			if i>2 and o_sql(2) = "" and o_sql(i)  "" then
				o_sql(2) = o_sql(i)
				o_sql(i) = ""
			end if 
			if o_sql(i) = "asc" or o_sql(i) = "desc" then
				if i >3  then
					o_sql(3) = o_sql(i)
					o_pai = " " & o_sql(i)
					o_sql(i) = ""
					exit for 
				end if 
			end if 
		next
		right_sql = join(o_sql)
		if o_pai = "" then
			o_pai = " asc"
			right_sql = replace(right_sql,o_sql(2),o_sql(2) & " asc")
		end if 
		cason_sql = left_sql & right_sql
		
		order_name = o_sql(2) & o_pai
		
	end property
	
	property get th(ByVal str_val)
		if instr(str_val,"desc") >0 then
			th = replace(str_val,"desc","asc")
		else
			th = replace(str_val,"asc","desc")
		end if 
	end property 
	'================================================================
	' ResultSet 返回分页后的记录集
	'================================================================
	public Property Get ResultSet()
		dim Cason_Rs,col_name
		dim top_sql,top_Count,select_sql
		dim set_sql 
		col_name = order_name
		if int(Cason_CurrPage) = 1 then
			top_sql = " top " & Cason_PageSize & " "
			top_Count = 0
		else
			top_sql = " top " & (Cason_CurrPage) * Cason_PageSize & " "
			top_Count = (Cason_CurrPage - 1) * Cason_PageSize 
		end if 
		set_sql = "select" & top_sql & trim(mid(Cason_sql,7))
		select_sql = "set rowcount " & Cason_PageSize & ";select * from (select top " & Cason_PageSize & " * from (" & set_sql & ") z order by " & th(col_name) & " ) zz order by zz." & col_name 
		set Cason_Rs = yl.GetRs(select_sql,1,1)
		if int(Cason_CurrPage)>Cason_Rs.pagecount then
			Cason_CurrPage = Cason_Rs.pagecount
		end if
		Cason_Rs.PageSize	= Cason_PageSize
		Cason_JsonHtml = ",""iRecCount"":""" & num_rows & """"
		response.write toJSON("""info""",Cason_Rs)
	End Property