[转]asp+oracle分页

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%>页

时间: 2024-11-05 06:14:13

[转]asp+oracle分页的相关文章

asp.net分页控件使用详解【附实例下载】

本篇文章主要对asp.net创建事务的方法进行实例介绍,具有很好的参考价值,需要的朋友一起来看下吧 一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将整理代码如下 二.代码 1.首先在测试页面Default.aspx页面添加引用 <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer"

oracle分页存储过程

oracle分页存储过程: CREATE OR REPLACE PROCEDURE FGK.prc_page (p_tableName in varchar2, --表名 p_strWhere in varchar2, --查询条件 p_orderColumn in varchar2, --排序的列 p_orderStyle in varchar2, --排序方式 p_curPage in out Number, --当前页 p_pageSize in out Number, --每页显示记录条

ASP经典分页类

================================================================= 'XDOWNPAGE ASP版本 '版本 1.00 'Code by zykj2000 'Email: [email protected] 'BBS: http://bbs.513soft.net '本程序可以免费使用.修改,希望我的程序能为您的工作带来方便 '但请保留以上请息 ' '程序特点 '本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义

ASP.NET 分页

关于分页在各个系统里都会用到,在此,就分页的各种方法做下总结. ASP.NET 分页,布布扣,bubuko.com

Oracle分页查询语句的写法(转)

分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.Oracle分分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHER

asp.net分页

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 8 namespace WebApp 9 { 10 public partial class DataListWeb : System.Web.UI.Page 11 { 12 13 BLL.Ma

ORACLE 分页查询

Oracle之分页查询 Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句.ROWNUM <= 40和RN >= 21控制分页查询的每页的范围.

oracle 分页查询数据重复问题

最近在做项目的时候发现一个问题,oracle 在查询分页数据的时候,有几条数据重复查询了,并且有几条数据在分页的时候消失了.百度了一下发现,ORACLE 在查询数据的时候返回的行不是固定的,他只是按照顺序从数据中读取符合条件的数据返回到客户端,给用户误解为默认排序. 然而,当我加上排序的时候,还是查询有重复的数据,(指第一页数据在第二页也查询出来了),这是我就疑问了,当我检查数据的时候,发现我排序的字段有空的情况,而且有很多条,导致排序返回的 伪列并不是唯一的. 总结: oracle 分页查询数

oracle分页查询结果集重复问题&解决方法

做项目时,无意间发现了分页上的一个bug,在此记录一下: 首先手动将后台输出的sql语句复制进oracle中查看,以便排查错误,对比以下视图前10条的结果集与10到20条的结果集,发现大部分记录出现重复现象,SQL语句如下: --前10条记录 select *   from (select row_.*, rownum rownum_           from (select t.idcard, count(1)                   from sampling.v_unvou

2.oracle分页,找到员工表中薪水大于本部门平均薪水的员工

 ROWNUM的知识点 A ROWNUM按照oracle的默认机制生成. B rownum只能使用<=  <号,不能使用>  >= rownum的实现机制 rownum表示,返回的结果集的行号(是一个属性,固化到一行之中,不会因为你排序,而发生变化).没有第一行,就没有第二行:没有第二行就没有第三行. Oracle Top-N select rownum,empno,ename,sal from (select empno,ename,sal from emp order by