繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> 正则表达式 >> ASP中正则表达式的应用(二)

ASP中正则表达式的应用(二)

2004-10-01 08:26:10  作者:  来源:互联网  浏览次数:43  文字大小:【】【】【
简介:  五、总结   上面我们介绍了正则表达式的基本概念,以及在VBScript和JavaScript中如何使用正则表达式,同时,通过一些实例让大家有了感性的认识。正则表达式的应用范围很广,能为大家解决很多实际中的问题。...
关键字:正则 表达式 应用 ASP

  五、总结

  上面我们介绍了正则表达式的基本概念,以及在VBScript和JavaScript中如何使用正则表达式,同时,通过一些实例让大家有了感性的认识。正则表达式的应用范围很广,能为大家解决很多实际中的问题。本文介绍的内容只是一些初步的知识,还有很多语法规则需要大家继续学习,在实践中发现问题,解决问题。 返回顶部

             怎么实现数据记录的分页显示(作者:DarkMan)

怎么实现数据记录的分页显示 (1)

通过Recordset的GetRows方法,可以实现数据记录的分页显示。下面是一个完整的例子:

<%@ Language = VBSCRIPT %>

<% Option Explicit %>

<%

Dim iStart, iOffset

iStart = Request("Start")

iOffset = Request("Offset")

if Not IsNumeric(iStart) or Len(iStart) = 0 then

  iStart = 0

else

  iStart = CInt(iStart)

end if

if Not IsNumeric(iOffset) or Len(iOffset) = 0 then

  iOffset = 10

else

  iOffset = Cint(iOffset)

end if

Response.Write "察看 " & iOffset & " 个记录从 " & iStart & "开始
"

Dim objConn, objRS

Set objConn = Server.CreateObject("ADODB.Connection")

objConn.Open "Provider=SQLOLEDB.1;Data Source=(local);uid=sa;pwd=;Initial    Catalog=pubs"

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open "SELECT * FROM Authors", objConn

Dim aResults

aResults = objRS.GetRows

objRS.Close

Set objRS = Nothing

objConn.Close

Set objConn = Nothing

Dim iRows, iCols, iRowLoop, iColLoop, iStop

iRows = UBound(aResults, 2)

iCols = UBound(aResults, 1)

If iRows > (iOffset + iStart) Then

  iStop = iOffset + iStart - 1

Else

  iStop = iRows

End If

For iRowLoop = iStart to iStop

  For iColLoop = 0 to iCols

 Response.Write aResults(iColLoop, iRowLoop) & " "

 Next

  Response.Write "
"

 Next

Response.Write "

"

if iStart > 0 then

'显示“前 10个”连接

  Response.Write "前 " & iOffset & ""

 end if

if iStop < iRows then

'显示“后 10个”连接

 Response.Write " 后 " & iOffset & ""

end if

%>

怎么实现数据的分页显示(2)

这里介绍另外一种分页显示的方法,是通过 MS SQL的存储过程。本方法不适用于Access数据库。

假设我们要对数据表MyTable的数据实现分页显示,首先写一个存储过程 如下:

CREATE PROCEDURE sp_PagedItems

 (

  @Page int,

  @RecsPerPage int

  )

  AS

  -- 加快表的 插入速度

  SET NOCOUNT ON

  -- 开始记录 号

  DECLARE @RecCount int

  SELECT @RecCount = @RecsPerPage * @Page + 1

  --创建临时 表

  CREATE TABLE #TempItems

  (

  ID int IDENTITY,

  Name varchar(50),

  Price currency

 )

  -- 准备临时 表

  INSERT INTO #TempItems (Name, Price)

  SELECT Name,Price FROM MyTable ORDER BY Price

  -- 求出要查 询的最小ID和最大ID

  DECLARE @FirstRec int, @LastRec int

  SELECT @FirstRec = (@Page - 1) * @RecsPerPage

  SELECT @LastRec = (@Page * @RecsPerPage + 1)

  -- 得到实际 的记录,并返回是否还有数据!

  SELECT *,

  MoreRecords =

 (

  SELECT COUNT(*)

  FROM #TempItems TI

  WHERE TI.ID >= @LastRec

 )

  FROM #TempItems

  WHERE ID > @FirstRec AND ID < @LastRec

  -- 恢复设置

  SET NOCOUNT OFF

  在这个存储过程里,我们首先创建一个全部 记录的临时表,并增加了一个自动编号的字段ID。这样,不同的记录就有一个递增的唯一标志。

  根据当前的页号和每页的记录数,可以计算 出每页的最小和最大的ID。从而得到当前页的所有记录。

  为了显示的方便,存储过程还计算了 MoreRecords字段,作为显示下一页的判断条件。

  利用了这个存储过程的程序代码如下:

 <%

  '每页显示10条

  Const iRecordsPerPage = 10

  Dim currentPage '当前页号

  Dim bolLastPage '在最后一页?

  

 if len(Request.QueryString("page")) = 0 then

   currentPage = 1

 else

   currentPage = CInt(Request.QueryString("page"))

 end if

  '得到当前页的记录

  strSQL = "sp_PagedItems " & currentPage & "," & iRecordsPerPage

  objRS.Open strSQL, objConn

  

  '判断是否在最后一页

 if Not objRS.EOF then

   if CInt(objRS("MoreRecords")) > 0 then

    bolLastPage = False

   else

    bolLastPage = True

   end if

  end if

  %>

  

 

  

 <%

  Do While Not objRS.EOF %>

  

  <% objRS.MoveNext

  Loop %>

 

  

    List of Items

  

  

   <%=objRS("Name")%>

  

   <%=FormatCurrency(objRS("Price"))%>

  

  

  

 <%

  '第一页不 显示“前一页”

 if currentPage > 1 then %>

  

  ONCLICK="document.location.href='thispage.asp?page=<%=currentPage-1%>'"> ;

  

 <% end if

  '最后一页 不显示“后一页”

 if Not bolLastPage then %>

  

  ONCLICK="document.location.href='thispage.asp?page=<%=currentPage+1%>'"> ;

 <% end if %>

  

                                

责任编辑:admin
相关文章