首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

急如何在调用存储过程后,把得到的记录集分页显示

2012-03-15 
急~~怎么在调用存储过程后,把得到的记录集分页显示?从网上看到的例子,没太明白。代码如下:--存储过程CREATE

急~~怎么在调用存储过程后,把得到的记录集分页显示?
从网上看到的例子,没太明白。代码如下:

--存储过程

CREATE       procedure       p_splitpage                  
    @sql       varchar(8000),   --要执行的sql语句      
    @page       int=1,       --要显示的页码      
    @pageSize       int,   --每页的大小      
    @pageCount       int=0       out,   --总页数      
    @recordCount       int=0       out   --总记录数      
    as      
    set       nocount       on      
    declare       @p1       int      
    exec       sp_cursoropen       @p1       output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount       output      
    set       @recordCount       =       @pageCount      
    select       @pagecount=ceiling(1.0*@pagecount/@pagesize)      
    ,@page=(@page-1)*@pagesize+1      
    exec       sp_cursorfetch       @p1,16,@page,@pagesize          
    exec       sp_cursorclose       @p1
GO

--ASP调用代码:

set   rsFile=cnAm.execute(session( "am_volfilesearchsql "))      
if   request( "page ")= " "   or   request( "page ")=0   or   IsNumeric(request( "page "))=false   then      
m_page=1      
else      
m_page=cint(request( "page "))      
end   if      
m_pagesize=2 '每页的条数      
set   cmd   =   server.CreateObject( "adodb.command ")
cmd.ActiveConnection   =   cnAm    
cmd.CommandType   =   4      
cmd.CommandText   =   "p_SplitPage "  
cmd.Parameters.Append   cmd.CreateParameter( "@sql ",8,1,8000,session( "am_volfilesearchsql "))      
cmd.Parameters.Append   cmd.CreateParameter( "@page ",4,1,4,m_page)      
cmd.Parameters.Append   cmd.CreateParameter( "@pageSize ",4,1,4,m_pageSize)      
cmd.Parameters.Append   cmd.CreateParameter( "@pageCount ",4,2,4,m_pageCount)      
cmd.Parameters.Append   cmd.CreateParameter( "@recordCount ",4,2,4,m_recordCount)      
set   rsFile   =   cmd.Execute      
set   rsFile   =   rsFile.NextRecordSet      
m_pageCount   =   cmd.Parameters( "@pageCount ").value      
m_recordCount   =   cmd.Parameters( "@recordCount ").value      
if   m_pageCount   =   0   then   m_pageCount   =   1      
set   rsFile   =   cmd.Execute      
。。。。。。。。。。。。。。。。。。。。

以下就不会写了,因为如果用rsFile.MoveFirst、rsFile.AbsolutePage都会报不支持该属性。



第一次用ASP调用存储过程,请高人指点一下应该怎么写这个循环呀?


[解决办法]
要使用tsql语言
你用的是ado
[解决办法]
set rsFile = cmd.Execute
………………………………
set rsFile = cmd.Execute
????
[解决办法]
不清楚,不懂ado;
[解决办法]
你的这句是什么意思?为何第一行就这样执行了,又用存储过程执行?
set rsFile=cnAm.execute(session( "am_volfilesearchsql "))


代码:
<%
dim m_pagesize,m_page,m_pagecount,m_recordcount
m_pagesize = 6 '每页显示的记录数
m_page=request( "page ")
if m_page= " " or isnumeric(m_page)=false then
m_page=1
end if

set cmd = server.CreateObject( "adodb.command ")
cmd.ActiveConnection = cnAm
cmd.CommandType = 4
cmd.CommandText = "p_SplitPage "
cmd.Parameters.Append cmd.CreateParameter( "@sql ",8,1,8000,session( "am_volfilesearchsql "))
cmd.Parameters.Append cmd.CreateParameter( "@page ",4,1,4,m_page)
cmd.Parameters.Append cmd.CreateParameter( "@pageSize ",4,1,4,m_pageSize)
cmd.Parameters.Append cmd.CreateParameter( "@pageCount ",4,2,4)
cmd.Parameters.Append cmd.CreateParameter( "@recordCount ",4,2)

set rs = cmd.Execute
m_pagecount = comm.Parameters( "@pageCount ").value '获取总页数
m_recordcount = comm.Parameters( "@recordCount ").value '获取总记录数

do while not rs.eof

response.write rs( "... ")

rs.movenext
Loop
Set rs=nothing
comm.close
Set comm=Nothing


response.write "总共有 "& m_recordcount & "条数据,总共 "& m_pagecount & "页,当前第 "& m_page & "页 "
%>
<a href= "**.asp?page= <%=m_page+1%> "> 下一页 </a>
<a href= "**.asp?page= <%=m_page-1%> "> 上一页 </a>

这样测试一下,我这里没有sql存储过程,没法测试
[解决办法]
下面就是写控制上页,下页,然后循环当前页的记录集就可以了

热点排行