ASP中Regex的應用(二)

來源:互聯網
上載者:User
正則   五、總結
  上面我們介紹了Regex的基本概念,以及在VBScript和JavaScript中如何使用Regex,同時,通過一些執行個體讓大家有了感性的認識。Regex的應用範圍很廣,能為大家解決很多實際中的問題。本文介紹的內容只是一些初步的知識,還有很多文法規則需要大家繼續學習,在實踐中發現問題,解決問題。 返回頂部


             怎麼實現資料記錄的分頁顯示(作者: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 & "開始 <BR>"

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 "<BR>"
 Next

Response.Write "<P>"
if iStart > 0 then
'顯示“前 10個”串連
  Response.Write "<A HREF=""paging.asp?Start=" & iStart-iOffset & _
 "&Offset=" & iOffset & """>前 " & iOffset & "</A>"
 end if

if iStop < iRows then
'顯示“後 10個”串連
 Response.Write " <A HREF=""paging.asp?Start=" & iStart+iOffset & _
  "&Offset=" & iOffset & """>後 " & iOffset & "</A>"
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>

 



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。