asp大数据存储过程分页全部代码

时间:2009-02-27    点击:1655   

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Response.CodePage=65001%>
<% response.charset="utf-8" %>

<!--#include file="ADOVBS.inc" -->

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "provider=sqloledb;server=127.0.0.1;user id=sa;password=sa;database=email"

 

REM 分页显示
function pagecute(allpages,viewpage,pageurl,pp,ps,pc)
  if int(allpages)=0 or int(TotalPages)=1 then
 pagecute="首页 上页 <font color=red >[1]</font> 下页 尾页 共"&allpages&"页 每页"&ps&"条 共"&pc&"条记录"
   exit function
 end if
 
 
  dim pn,pi,page_num,ppp,pl,pr
  pi=1
  ppp=pp\2
  if pp mod 2 = 0 then ppp=ppp-1
  pl=viewpage-ppp
  pr=pl+pp-1
 
  if pl<1 then
    pr=pr-pl+1:pl=1
    if pr>allpages then pr=allpages
  end if
  if pr>int(allpages) then
    pl=pl+allpages-pr:pr=allpages
    if pl<1 then pl=1
  end if
  if pl>0 then
    if viewpage=1 then
       response.write " 首页  上页 "
 else
       'response.write " <a href='"& pageurl &"' title='第一页'>首页</a>  <a href='"& pageurl &"pageno="&pl-1&"' title='上一页'>上页</a> "
       response.write " <a href='"& pageurl &"' title='第一页'>首页</a>  <a href='"& pageurl &"pageno="&viewpage-1&"' title='上一页'>上页</a> "
 end if
  end if
  for pi=pl to pr
 if clng(viewpage)=clng(pi) then
      response.write " <span style='color:red;'>[" & pi & "]</span> "
    else
      response.write " <a href='"& pageurl &"pageno="& pi &"' title='第 " & pi & " 页'>[" & pi & "]</a> "
    end if
  next
  if pr<=allpages then
    if viewpage=allpages then
      pagecute=pagecute&" 下页  尾页 共"&allpages&"页 每页"&ps&"条 共"&pc&"条记录"
 else
      'pagecute=pagecute&" <a href='"& pageurl &"pageno="&pi&"' title='后一页'>下页</a>  <a href='"& pageurl &"pageno="& allpages &"' title='最后一页'>尾页</a>  共"&allpages&"页"
      pagecute=pagecute&" <a href='"& pageurl &"pageno="&viewpage+1&"' title='后一页'>下页</a>  <a href='"& pageurl &"pageno="& allpages &"' title='最后一页'>尾页</a>  共"&allpages&"页 每页"&ps&"条 共"&pc&"条记录"
    end if
  end if
end function

 

dim startime
startime=timer()

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>

<body>

 

<div style="height:250px; ">

<table width="30%">

<tr>
  <Td>id</Td>
  <Td>title</Td>
  <Td>lb</Td>
  <Td>lb1</Td>
  <Td>lb2</Td>
</tr>

     <% 
       url="100wfenye存储过程.asp?"
           
    
    
     page_size=10

                 pageno=request("pageno")
 
                 if Not IsNumeric(pageno) or pageno="" then
             pageno=1
              else
             pageno=clng(pageno)
              end if
 

 

 

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

set cmd=server.CreateObject("adodb.command")

set cmd.ActiveConnection=conn
cmd.commandtype=adCMdStoredProc
cmd.commandtext="book_Page"

set para1=cmd.createparameter("tbname",advarchar,adparaminput,1000)
set para2=cmd.createparameter("FieldKey",advarchar,adparaminput,1000)
set para3=cmd.createparameter("PageCurrent",adinteger,adparaminput,1)
set para4=cmd.createparameter("PageSize",adinteger,adparaminput,10)
set para5=cmd.createparameter("FieldShow",advarchar,adparaminput,1000)
set para6=cmd.createparameter("Fieldorder",advarchar,adparaminput,1000)
set para7=cmd.createparameter("Where",advarchar,adparaminput,1000)
set para8=cmd.createparameter("Pagecount",adinteger,adparamoutput,10)

set para9=cmd.createparameter("Recordcount",adinteger,adparamoutput,10)

cmd.parameters.append para1
cmd.parameters.append para2
cmd.parameters.append para3
cmd.parameters.append para4
cmd.parameters.append para5
cmd.parameters.append para6
cmd.parameters.append para7
cmd.parameters.append para8
cmd.parameters.append para9


cmd("tbname")="test"
cmd("FieldKey")="testid"
cmd("PageCurrent")=pageno
cmd("PageSize")=page_size
cmd("FieldShow")=""
cmd("Fieldorder")=""
cmd("Where")=""
   


cmd.execute() 
pagecounts=cmd("PageCount")
recordcounts=cmd("recordcount")

set rs=server.CreateObject("adodb.recordset")
rs.open cmd

set cmd = nothing 
 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    
                   
     for j= 1 to page_size
     
         if rs.eof then
           exit for
         end if
     
   %>
<tr>
  <Td><%=rs("testid")%></Td>
  <Td><%=rs("title")%></Td>
  <Td><%=rs("lb")%></Td>
  <Td><%=rs("lb1")%></Td>
  <Td><%=rs("lb2")%></Td>
</tr>

      <%
      rs.movenext
     next
    
      %>

</table>

</div>

 <p align="center">
   <div class="ppage">
     <%
     response.Write pagecute(pagecounts,pageno,url,10,page_size,recordcounts)
     rs.close
     set rs=nothing
     %>
   </div>
  </p>  

<%
dim endtime
endtime=timer()
%>
页面执行时间:<%=FormatNumber((endtime-startime)*1000,3)%>毫秒

 

////////////////////////////////////////////////

存储过程:

 

CREATE PROC book_Page
@tbname    nvarchar(1000),         --要分页显示的表名
@FieldKey   nvarchar(1000),   --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段
@PageCurrent int=1,            --要显示的页码
@PageSize   int=10,             --每页的大小(记录数)
@FieldShow nvarchar(1000)='',   --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段
@FieldOrder nvarchar(1000)='',   --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC
                                         -- 用于指定排序顺序
@Where    nvarchar(1000)='',  --查询条件
@PageCount int OUTPUT,          --总页数
@RecordCount int OUTPUT          --总页数
AS
SET NOCOUNT ON
--检查对象是否有效
IF OBJECT_ID(@tbname) IS NULL
BEGIN
 RAISERROR(N'对象"%s"不存在',1,16,@tbname)
 RETURN
END
IF OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTable')=0
 AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsView')=0
 AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTableFunction')=0
BEGIN
 RAISERROR(N'"%s"不是表、视图或者表值函数',1,16,@tbname)
 RETURN
END

--分页字段检查
IF ISNULL(@FieldKey,N'')=''
BEGIN
 RAISERROR(N'分页处理需要主键(或者惟一键)',1,16)
 RETURN
END

--其他参数检查及规范
IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1
IF ISNULL(@PageSize,0)<1 SET @PageSize=10
IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*'
IF ISNULL(@FieldOrder,N'')=N''
 SET @FieldOrder=N''
ELSE
 SET @FieldOrder=N'ORDER BY '+LTRIM(@FieldOrder)
IF ISNULL(@Where,N'')=N''
 SET @Where=N''
ELSE
 SET @Where=N'WHERE ('+@Where+N')'

--如果@PageCount为NULL值,则计算总页数(这样设计可以只在第一次计算总页数,以后调用时,把总页数传回给存储过程,避免再次计算总页数,对于不想计算总页数的处理而言,可以给@PageCount赋值)
IF @PageCount IS NULL
BEGIN
 DECLARE @sql nvarchar(4000)
 SET @sql=N'SELECT @PageCount=COUNT(*)'
  +N' FROM '+@tbname
  +N' '+@Where
 EXEC sp_executesql @sql,N'@PageCount int OUTPUT',@PageCount OUTPUT
 SET @PageCount=(@PageCount+@PageSize-1)/@PageSize
END


IF @RecordCount IS NULL
BEGIN
 --DECLARE @sql nvarchar(4000)
 SET @sql=N'SELECT @RecordCount=COUNT(*)'
  +N' FROM '+@tbname
  +N' '+@Where
 EXEC sp_executesql @sql,N'@RecordCount int OUTPUT',@RecordCount OUTPUT
 --SET @PageCount=(@PageCount+@PageSize-1)/@PageSize
END

 

--计算分页显示的TOPN值
DECLARE @TopN varchar(20),@TopN1 varchar(20)
SELECT @TopN=@PageSize,
 @TopN1=(@PageCurrent-1)*@PageSize

--第一页直接显示
IF @PageCurrent=1
 EXEC(N'SELECT TOP '+@TopN
  +N' '+@FieldShow
  +N' FROM '+@tbname
  +N' '+@Where
  +N' '+@FieldOrder)
ELSE
BEGIN
 --处理别名
 IF @FieldShow=N'*'
  SET @FieldShow=N'a.*'

 --生成主键(惟一键)处理条件
 DECLARE @Where1 nvarchar(4000),@Where2 nvarchar(4000),
  @s nvarchar(1000),@Field sysname
 SELECT @Where1=N'',@Where2=N'',@s=@FieldKey
 WHILE CHARINDEX(N',',@s)>0
  SELECT @Field=LEFT(@s,CHARINDEX(N',',@s)-1),
   @s=STUFF(@s,1,CHARINDEX(N',',@s),N''),
   @Where1=@Where1+N' AND a.'+@Field+N'=b.'+@Field,
   @Where2=@Where2+N' AND b.'+@Field+N' IS NULL',
   @Where=REPLACE(@Where,@Field,N'a.'+@Field),
   @FieldOrder=REPLACE(@FieldOrder,@Field,N'a.'+@Field),
   @FieldShow=REPLACE(@FieldShow,@Field,N'a.'+@Field)
 SELECT @Where=REPLACE(@Where,@s,N'a.'+@s),
  @FieldOrder=REPLACE(@FieldOrder,@s,N'a.'+@s),
  @FieldShow=REPLACE(@FieldShow,@s,N'a.'+@s),
  @Where1=STUFF(@Where1+N' AND a.'+@s+N'=b.'+@s,1,5,N''), 
  @Where2=CASE
   WHEN @Where='' THEN N'WHERE ('
   ELSE @Where+N' AND ('
   END+N'b.'+@s+N' IS NULL'+@Where2+N')'

 --执行查询
 EXEC(N'SELECT TOP '+@TopN
  +N' '+@FieldShow
  +N' FROM '+@tbname
  +N' a LEFT JOIN(SELECT TOP '+@TopN1
  +N' '+@FieldKey
  +N' FROM '+@tbname
  +N' a '+@Where
  +N' '+@FieldOrder
  +N')b ON '+@Where1
  +N' '+@Where2
  +N' '+@FieldOrder)
END
GO

</body>
</html>

显示世界各地时间
图形钟表
JavaScript时钟
显示农历日历(4)
asp大数据存储过程分页全部代码
> 返回     
地址:上海市普陀区胶州路941号长久商务中心 电话: QQ:
© Copyright 2012 上海网络 All Rights Reserved