精华区 [关闭][返回]

当前位置:月光软件>>讨论区精华>>〖软件开发〗>>● ASP>>★ASP的技巧★>>字符及编码>>ASP中正则表达式的应用(二)

主题:ASP中正则表达式的应用(二)
发信人: tophua2000(大头鬼)
整理人: dongbao(2002-04-19 16:57:07), 站内信件
五、总结 
  上面我们介绍了正则表达式的基本概念,以及在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 "<P>" 
if iStart > 0 then 
'显示“前 10个”连接 
  Response.Write "<A HREF=""paging.asp?Start=" & iStart-iOffset & _
 "&Offset=" & iOffset & """>前 " & iOffset & "" 
 end if 

if iStop < iRows then
'显示“后 10个”连接
 Response.Write " <A HREF=""paging.asp?Start=" & iStart+iOffset & _
  "&Offset=" & iOffset & """>后 " & 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 
  %> 
  <P> 

 <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 ALIGN=CENTER> 
  <TR><TH COLSPAN=2 BGCOLOR=NAVY> 
  <FONT SIZE=+1 COLOR=WHITE> 
    List of Items 
   
  </TH></TR> 
 <%
  Do While Not objRS.EOF %> 
   <TR><TD ALIGN=LEFT BGCOLOR=GRAY> 
   <%=objRS("Name")%> 
   </TD><TD ALIGN=CENTER BGCOLOR=GRAY> 
   <%=FormatCurrency(objRS("Price"))%> 
   </TD></TR> 
  <% objRS.MoveNext
  Loop %> 
 </TABLE> 
  <P> 
  <CENTER> 
 <%

  '第一页不 显示“前一页”
 if currentPage > 1 then %> 
  <INPUT TYPE=BUTTON VALUE="<< 前 <%=iMaxRecords%> 记录 " 
  ONCLICK="document.location.href='thispage.asp?page=<%=currentPage-1%>'"> ; 
        
 <% end if

  '最后一页 不显示“后一页”
 if Not bolLastPage then %> 
  <INPUT TYPE=BUTTON VALUE="后 <%=iMaxRecords%> 记录 >>" 
  ONCLICK="document.location.href='thispage.asp?page=<%=currentPage+1%>'"> ; 
 <% end if %> 
  </CENTER>                       


----
 ■■■■■■■■■■■■■■
 ■    人背不能怪社会     ■
 ★    人穷不能怪父母     ★
 ★    西安,我的家园   ★
 ■■■■■■■■■■■■■■ 

[关闭][返回]






转载请注明:转载自 月光程序代码网 [ http://www.moon-soft.com ]