ASP程序数据库分页怎么分啊,求高手!

我原来的SQL查询语句是:selecttop30sum(casewhenorderstatusin(3)thenpsgernumelse0-psgernumend)[ps... 我原来的SQL查询语句是:select top 30 sum(case when orderstatus in (3) then psgernum else 0-psgernum end ) [psgercount],BuyerId,Guid,BuyerName,BuyerCompany,Provinces,Companyphone,makevip from tbl_Buyers a left join tbl_Analysis b on a.guid=b.buyersguid where makevip like '%sd%'group by BuyerId,Guid,BuyerName,BuyerCompany,Provinces,Companyphone,makevip order by [psgercount] desc

是一个用group by链表的1个查询
以前用的是GRIDVIEW的自带分页,怎么做数据库分页,如果回答直接可以用的话追加分值!
没人会 吗?????????
展开
 我来答
woaixiangcao
2010-06-10 · TA获得超过470个赞
知道答主
回答量:119
采纳率:0%
帮助的人:52.2万
展开全部
你要数据库分页的话,这里给你一个 全功能的数据库分页的存储过程。我自己弄得。看不懂直接按参数列表传参直接用用了。比较复杂。

--distinct 功能为去除重复数据
Create PROC SP_PAGER_list
@page_Index int,--我们要查看的页码,0代表的第一页
@page_Size int,--页面记录数的大小

@table_Name_join_on varchar(2000),--格式:table1 join table2 on table1.xx=table2.xx...
--该参数为from后面的条件即: xx join xx on xx.xx=xx.xx join xx on xx.xx=xx.xx

@order_By varchar(2000),--xxx 列名
--分页数据排序规则:如按时间排列 传入 时间列列名。

@value_list varchar(2000),
--需要查询的值可传入 table1.xx,table2.xx 或者* 。这里需保证不能的有 多个表 的值列表名 和 规则@order_By一样只能有一个和@order_By一样。主要由于动态表和实表一样不可以有多个相同列明。--如有需要使用as xxx 自定义列名以区分开。
@getWhere varchar(2000),--table1.xxx between (xx and xx ) and ... and xxx.xx=xx
-- where 后面的规则筛选规则没有就传1=1。
@total_Page int output --总的页数
AS
BEGIN
DECLARE @total_Record int --总记录数
DECLARE @left_Record int --记录最后一页剩余记录数
DECLARE @page_Num int --实际的页码,自然数表示
SET @page_Num = @page_Index + 1

--
--declare @num int,

DECLARE @sqls nvarchar(2000)

set @sqls='select @a = count(*)from '+@table_Name_join_on+' where 1=1 and '+@getWhere

exec sp_executesql @sqls,N'@a int output',@total_Record output

--exec sp_execute 'SELECT @total_Page = COUNT(*) FROM '+,
--

SET @left_Record = @total_Record % @page_Size

--当最后一页为满页时
IF(@left_Record = 0)
BEGIN
SET @total_Page = @total_Record / @page_Size
END
ELSE --当最后一页不足@page_Size时
BEGIN
SET @total_Page = @total_Record / @page_Size + 1
END

--取最后一页
IF(@page_Num = @total_Page)
BEGIN
IF(@left_Record = 0)
BEGIN
EXEC('select * from (SELECT distinct TOP '+@page_Size+' '+@value_list+' FROM '+@table_Name_join_on+' where 1=1 and '+@getWhere+' ORDER BY '+@order_By+' DESC) as t ORDER BY t.'+@order_By+' ASC')
END
ELSE
BEGIN
EXEC('select * from (SELECT distinct TOP '+@left_Record+' '+@value_list+' FROM '+@table_Name_join_on+' where 1=1 and '+@getWhere+' ORDER BY '+@order_By+' DESC) as t ORDER BY t.'+@order_By+' ASC')
END
END
--不是最后一页 处理方式:先查到所需页码和所需页码之前的所有数据 按排序规则倒序后提取所需数据(每页记录数)在拍一次序
ELSE
BEGIN
DECLARE @T VARCHAR(2000)
SET @T = ('SELECT * FROM (SELECT TOP '+CAST(@page_Size AS VARCHAR(5)) +' * FROM (SELECT distinct TOP '+CAST(@page_Size*@page_Num AS VARCHAR(5))+' '+@value_list+' FROM '+@table_Name_join_on+' where 1=1 and '+@getWhere+' ORDER BY '+@order_By+' ASC)as t ORDER BY '+@order_By+' DESC)as t2 ORDER BY '+@order_By+' ASC')
EXEC (@T)
END
END
GO
JovenShao
2010-06-03 · TA获得超过514个赞
知道小有建树答主
回答量:1161
采纳率:80%
帮助的人:612万
展开全部
用tbl_Buyers或tbl_Analysis的主键做判断
如:page = 3
select top 30 * from xx where id > 30 * 3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyj0605
2010-06-03
知道答主
回答量:62
采纳率:0%
帮助的人:20.5万
展开全部
<LINK href="images/css.css" type=text/css rel=stylesheet>
<LINK href="images/newhead.css" type=text/css rel=stylesheet>
<style type="text/css">
<!--
.STYLE1 {font-size: 12px}
.STYLE2 {
font-size: 14;
color: #FF0000;
}
-->
</style>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table width="1024" height="136" border="0" cellpadding="0" cellspacing="0">
<%

Set rsprod=Server.CreateObject("ADODB.RecordSet")
sqlprod ="SELECT * FROM 表名 where 搜索条件 order by AddDate desc"
rsprod.open sqlprod,conn,1,1
n=0
if rsprod.bof and rsprod.eof then
response.write "<center><br><font color=red size=2>对不起,暂无信息!</font>"
'response.End
else
rsprod.PageSize =50'每页记录条数
iCount=rsprod.RecordCount '记录总数
iPageSize=rsprod.PageSize
maxpage=rsprod.PageCount
page=request("page")

if Not IsNumeric(page) or page="" then
page=1
else
page=cint(page)
end if

if page<1 then
page=1
elseif page>maxpage then
page=maxpage
end if

rsprod.AbsolutePage=Page

if page=maxpage then
x=iCount-(maxpage-1)*iPageSize
else
x=iPageSize
end if

For i=1 To x
%>
<tr>
<%i=0
do while not rsprod.eof and (i<rsprod.pagesize)
i=i+1
%>
<td width="25%" height="134" align="left" bgcolor="#FFFFFF">
<div align="left" class="STYLE4">
<table width="200" height="0" border="1" cellpadding=0 cellspacing=0 bordercolor="#CCCCFF" >
<tr>
<td width="32%" height="30" bgcolor="<%=rsprod("beijing")%>" ><div align="center" class="STYLE2"><a href="bianminxx.asp?id=<%=rsprod("ProdNum")%>" target="_self"><font size="3" color="<%=rsprod("biaoti")%>"><%=lleft(rsprod("ProdName"),20)%></font></a></div></td>
</tr>
<tr>
<td height="160" align="left" valign=top ><span class="STYLE1"><a href="bianminxx.asp?id=<%=rsprod("ProdNum")%>"><%=lleft(rsprod("MemoSpec"),200)%></a></span></td>
</tr>
<tr>
<td align="right" valign=middle bgcolor="#FFCCFF" ><div align="center"><span class="STYLE1"><%=split(rsprod("addDate")," ")(0)%>  浏览次数<%=rsprod("ClickTimes")%></span></div></td>
</tr>
</table>
</div> </td>
<%
if (i mod 5=0) and i>=5 then
%>
</tr>
<tr>
<%
end if
rsprod.movenext
loop
rsprod.close
%>
</tr>
</table>
<%rsprod.movenext
next
call PageControl(iCount,maxpage,page,"border=0 align=center","<p align=center>")
end if
rsprod.close
set rsprod=nothing
Sub PageControl(iCount,pagecount,page,table_style,font_style)
'生成上一页下一页链接
Dim query, a, x, temp
action = "http://" & Request.ServerVariables("HTTP_HOST") & Request.ServerVariables("SCRIPT_NAME")

query = Split(Request.ServerVariables("QUERY_STRING"), "&")
For Each x In query
a = Split(x, "=")
If StrComp(a(0), "page", vbTextCompare) <> 0 Then
temp = temp & a(0) & "=" & a(1) & "&"
End If
Next

Response.Write("<table width=820" & Table_style & " >" & vbCrLf )
Response.Write("<form method=get onsubmit=""document.location = '" & action & "?" & temp & "Page='+ this.page.value;return false;""><TR>" & vbCrLf )
Response.Write("<TD align=left width=250>" & vbCrLf )
Response.Write(font_style & vbCrLf )

Response.Write ("<IMG height=16 src=imagess/search_dot_01.gif width=14> " & vbCrLf)
Response.Write ("    " & vbCrLf)
Response.Write(" <font size=2>共有" & iCount & "条信息</font>" & vbCrLf)
Response.Write(" <font size=2>页次:" & page & "/" & pageCount & "页</font>" & vbCrLf)
Response.Write("</TD>" & vbCrLf )
Response.Write("<TD align=right width=434>" & vbCrLf )

if page<=1 then
Response.Write ("<font size=2>首页</font> " & vbCrLf)
Response.Write ("<font size=2>上页</font> " & vbCrLf)
else
Response.Write("<font size=2><A HREF=" & action & "?" & temp & "Page=1>首页</A> </font>" & vbCrLf)
Response.Write("<font size=2><A HREF=" & action & "?" & temp & "Page=" & (Page-1) & ">上页</A> </font>" & vbCrLf)
end if

if page>=pagecount then
Response.Write ("<font size=2>下页</font> " & vbCrLf)
Response.Write ("<font size=2>末页</font> " & vbCrLf)
else
Response.Write("<font size=2><A HREF=" & action & "?" & temp & "Page=" & (Page+1) & ">下页</A> </font>" & vbCrLf)
Response.Write("<font size=2><A HREF=" & action & "?" & temp & "Page=" & pagecount & ">末页</A></font> " & vbCrLf)
end if

Response.Write(" <font size=2>转到" & "<INPUT TYEP=TEXT NAME=page SIZE=1 Maxlength=5 VALUE=" & page & ">" & "页" & vbCrLf & "<INPUT type=image src=imagess/go.gif style=""font-size: 9pt"" value=GO></font>")
Response.Write("</TD>" & vbCrLf )
Response.Write("</TR></form>" & vbCrLf )
Response.Write("</table>" & vbCrLf )
End Sub
%>

把这个复制到DM里 把相应的字段改成你表里的即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式