通常在顯示表中的記錄的時候,由於記錄很多,需要對記錄進行分頁顯示,這裡是利用sql存儲過程進行分頁顯示
1、數據庫和字段,conn.ASP見
http://www.aspprogram.cn/detail.ASP?id=35
請在表中添加幾條記錄
2、存儲過程代碼
CREATE PROCEDURE dbo.getUserList
@iPageCount int OUTPUT, --總頁數
@iPage int, --當前頁號
@iPageSize int --每頁記錄數
as
set nocount on
begin
--創建臨時表
create table #t (ID int IDENTITY, --自增字段
y_id int,
y_username varchar(40),
y_passWord varchar(40))
--向臨時表中寫入數據
insert into #t
select y_id,y_username,y_passWord from dbo.[user]
order by y_id desc
--取得記錄總數
declare @iRecordCount int
set @iRecordCount = @@rowcount
--確定總頁數
IF @iRecordCount%@iPageSize=0
SET @iPageCount=CEILING(@iRecordCount/@iPageSize)
ELSE
SET @iPageCount=CEILING(@iRecordCount/@iPageSize)+1
--若請求的頁號大於總頁數,則顯示最後一頁
IF @iPage > @iPageCount
SELECT @iPage = @iPageCount
--確定當前頁的始末記錄
DECLARE @iStart int --start record
DECLARE @IEnd int --end record
SELECT @iStart = (@iPage - 1) * @iPageSize
SELECT @IEnd = @iStart + @iPageSize + 1
--取當前頁記錄
select * from #t where ID>@iStart and ID<@IEnd
--刪除臨時表
DROP TABLE #t
--返回記錄總數
return @iRecordCount
end
GO
3、顯示記錄list2.ASP
<!--#include file="conn.ASP"-->
<%
'**調用分頁存儲過程**
DIM pagenow,pagesize,pagecount,recordcount
DIM MyComm,MyRst
pagenow =Request("pn")
'自定義函數用於驗證自然數
if pagenow = "" then pagenow = 1
pagenow=CInt(pagenow)
pagesize = 2
Set MyComm = Server.CreateObject("ADODB.Command")
with MyComm
.ActiveConnection = conn 'conn是數據庫連接字串
.CommandText = "getUserList" '指定存儲過程名
.CommandType = 4 '表明這是一個存儲過程
.Prepared = true '要求將SQL命令先行編譯
'返回值(記錄總量)
.Parameters.Append .CreateParameter("RETURN",2,4)
'出參(總頁數)
.Parameters.Append .CreateParameter("@iPageCount",3,2)
'入參(當前頁號)
.Parameters.append .CreateParameter("@iPage",3,1,4,pagenow)
'入參(每頁記錄數)
.Parameters.append .CreateParameter("@iPageSize",3,1,4,pagesize)
Set rs = .Execute
end with
if rs.state = 0 then '未取到數據,rs關閉
recordcount = -1
else
rs.close '注意:若要取得參數值,需先關閉記錄集對象
recordcount = MyComm(0)
pagecount = CInt(MyComm(1))
if cint(pagenow)>=cint(pagecount) then pagenow=pagecount
end if
Set MyComm = Nothing
'以下顯示記錄
if recordcount = 0 then
Response.Write "無記錄"
elseif recordcount > 0 then
rs.open
Do While Not rs.eof
response.write rs("y_id")&":"&rs("y_username")&"----"&rs("y_passWord")&"<br>"
rs.movenext
loop
'*****************************分頁代碼**********************
If pagenow>1 Then
response.write "<a href=""?pn=1"">首頁</a> "
Else
response.write "首頁 "
End If
If pagenow>1 Then
response.write "<a href=""?pn="&pagenow-1&""">上一頁</a> "
Else
response.write "上一頁 "
End If
If pagenow<pagecount Then
response.write "<a href=""?pn="&pagenow+1&""">下一頁</a> "
Else
response.write "下一頁 "
End If
If pagenow<pagecount Then
response.write "<a href=""?pn="&pagecount&""">尾頁</a> "
Else
response.write "尾頁 "
End if
else 'recordcount=-1
Response.Write "參數錯誤"
end If
'*********************結束*****************************
%>
4、
5、完成,運行list2.ASP文件,就可以看到內容了,點擊 首頁,上一頁,下一頁,尾頁來體驗分頁的感覺。