读书人

急如何在调用存储过程后把得到的记录

发布时间: 2012-03-15 11:50:39 作者: rapoo

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

--存储过程

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存储过程,没法测试
[解决办法]
下面就是写控制上页,下页,然后循环当前页的记录集就可以了

读书人网 >ASP

热点推荐