[轉]asp+oracle分頁

來源:互聯網
上載者:User

標籤:

 
PageSize:每頁顯示的記錄數。
PageCount:根據使用者設定好的PageSize和表中的總記錄數,系統自動算出總頁數。
RecordCount:表中的總記錄數。
AbsolutePage:表示當前頁碼。如將AbsolutePage屬性設為3,則目前記錄移至第3頁第1條(也就是第31條)。
  
知道Recordset具有這幾個屬性後,相信大家都覺得實現記錄的分頁顯示是很簡單的。
先開啟資料庫及表,再設定好PageSize和AbsolutePage,最後將記錄資料輸出到瀏覽器,就可以大功告成。
誠然,使用Access或SQL server作資料庫時,就這麼簡單,因為這兩種資料庫都支援Recordset的這幾個用於分頁的屬性。
與Access或SQL server相比,Oracle資料庫提供更好的安全性,並且在資料量極大的情況下效能佔優,
然而Oracle並不支援這些分頁屬性。本文將介紹一種利用ASP實現對Oracle資料記錄分頁顯示的方法,
使得Oracle使用者能夠輕鬆方便地實現記錄分頁顯示。 二、實現過程分析

 <%
 sql = "Select * From data" 
 Set conn = Server.CreateObject("ADODB.Connection") 
 Cnn.Open "dsn=servername;uid=user;pwd=password;"
 Set Rs = Server.CreateObject("ADODB.Recordset")
 Rs.CursorType = 3
 Rs.LockType = 3
 Rs.Open sql, conn   //如果沒有記錄,就退出
If Rs.EOF Then  
Response.End 
End If 
%>

//以下顯示表頭 
<p align="center">設定檔表<br></p> 
<div align="center"> 
<center> 
<table border="1" width="560" cellspacing="0" cellpadding="0"> 
<tr> 
<td width="140" align="center">編號</td> 
<td width="140" align="center">姓名</td> 
<td width="140" align="center">電話</td>  <td width="140" align="center">E-mail</td>
 </tr>
 <%
 RecordsPerPage=10 //設定每頁顯示記錄數為10條記錄
 CurrentPageNumber=0 //設定當前頁號為0
 INDEX=1   //設定記錄編號為1
 //如果當前頁號參數不為空白,則將其類型轉換為長整型,並調用該參數
 if Request.QueryString("CurrentPageNumber") <> "" then
 CurrentPageNumber=CLng(Request("CurrentPageNumber")) 
 end if 
 //因為預設頁號從0開始,所以要將參數減1
 CurrentPageNumber=CurrentPageNumber-1
//以下計算總的記錄條數 
TotalRrecord=0 
While (not Rs.EOF) 
Rs.MoveNext 
TotalRecord=TotalRecord 1 
Wend 
//以下計算總頁數TotalPageNumber 
if (TotalRecord mod RecordsPerPage)=0 then  
TotalPageNumber=(TotalRecord/RecordsPerPage)  
else  
TotalPageNumber=((TotalRecord/RecordsPerPage) 1) 
end if 
//如果輸入頁號參數小於0,則顯示首頁 
If CurrentPageNumber<0 Then  
CurrentPageNumber=0 
end if  
//如果輸入頁號參數大於總頁數減1,則顯示最後一頁 
if CurrentPageNumber>(TotalPageNumber-1) Then  
CurrentPageNumber=(TotalPageNumber-1) 
end if 
Rs.movefirst  //記錄指標返回到第一個記錄 
//以下讓紀錄指標越過輸入頁號以前的記錄,走到當前頁的第一個紀錄 
PASSNUMBER = CurrentPageNumber*RecordsPerPage 
for i=0 to PASSNUMBER -1  
Rs.movenext 
next 
INDEX = PASSNUMBER 1 
NUMBER = 1 //NUMBER為計數器 
//以下顯示當前頁的表內容 
While (not Rs.EOF)and (NUMBER <= RecordsPerPage)  
%> 
<tr> 
<td width="140" align="center"><%Response.Write (INDEX)%></td> //編號 
<td width="140" align="center"><%Response.Write Rs("name")%></td> //姓名 
<td width="140" align="center"><%Response.Write Rs("telephone")%></td> //電話 
<td width="140" align="center"><%Response.Write Rs("email")%></td> //電子郵件 
</tr> 
<% 
Rs.MoveNext  
INDEX = INDEX 1 //編號加1 
NUMBER = NUMBER 1 //計數器加1 
Wend  
Rs.close 
%>  
</table>  
</center>  
</div>  
</html> 
//以下表單實現頁碼導航
<% pageName="display.asp" %>
<FORM Action=<%= pageName%> Method=GET> 
<% 
If CurrentPageNumber<>0 Then
%> 
<A HREF=<%= pageName%>?CurrentPageNumber=1>第一頁</A> 
<A HREF=<%= pageName%>?CurrentPageNumber=<%=(CurrentPageNumber)%>>上一頁</A> 
<% 
End If 
If CurrentPageNumber<>( TotalPageNumber -1) Then
%> 
<A HREF=<%= pageName%>?CurrentPageNumber=<%=(CurrentPageNumber 2)%>>下一頁</A> 
<A HREF=<%= pageName%>?CurrentPageNumber=<%=(TotalPageNumber)%>>最後一頁</A> 
<% 
End If  
%> 
輸入頁碼:<INPUT TYPE=TEXT Name=CurrentPageNumber>現在處於第<%=(CurrentPageNumber 1)%>頁/共<%=TotalPageNumber%>頁

 

[轉]asp+oracle分頁

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.