关于 分页出现负数解决方法及建议

对于Recordset分页时出现负数的现象,相信会有很多人遇到过这个问题,有时百度、GOOGLE也不得其解,现在由我来总结一下。

出现负数,主要和游标类型有关系。(为举例方便,假设已经有一个conn.asp链接数据库的文件并且已经include)现在举一个例子,代码如下:

对于Recordset分页时出现负数的现象,相信会有很多人遇到过这个问题,有时百度、GOOGLE也不得其解,现在由我来总结一下。

出现负数,主要和游标类型有关系。(为举例方便,假设已经有一个conn.asp链接数据库的文件并且已经include)现在举一个例子,代码如下:

'=======================================================
          sql="Select * from 表名 where 条件 order by ID desc"    '这里的order by 条件可根据自己需要改写
          Set rs=conn.execute(sql)      '===注意一下这一句===
          rs.pagesize=10      '===设置每页的记录数为10===
          page=request.querystring("page")
          If page="" Then page=1
          If Not IsNumeric(page) Then page=1
          page=clng(page)
          If page<1 Then page=1
          If page>rs.pagecount Then page=Vrs.pagecount
          rs.absolutepage=page
         dim c
         c=1
         Do while Not rs.eof And c<=rs.pagecount
              '输出内容
         c=c+1
         rs.movenext
         Loop
         '做页面的链接
'=======================================================

根据上面的代码,RecordSet对象直接由代码:Set rs=conn.execute(sql),使用该句后,RecordSet对象默认的游标为0,即游标只能向前滚动,锁定类型为0,表示只读锁定,不能更新RecordSet对象。

所以,对于分页时如果出现负数,则检查RecordSet对象是否写为以上形式,要写成:
Set rs=Server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3
以上表示游标为1,可向前向后移动;锁定类型为3,可批量更新多条记录。

根据上述方法做基本上不再会有问题,但为保险,根据RecordSet分页的原理是根据读取所有记录后获取记录数,所以先让游标滚动一圈,在级rs.pagesize=10  后面加上以下两句:
rs.movelast   '游标移至最后
rs.movefirst  '游标移到最前

已知RecordSet的分页原理为先把整个数据库里面的记录读出后才能获取rs.Recordcount(记录总数)的值。这种分页方法比较简单,但是有一个致命的坏处,当数据库里记录数有很多条时,根据其分页原理,这样就会占用很高的系统资源,非常浪费,建议在实际编程中不使用该方法。现在给大家一个思路,可以在SQL查询语句里做分页处理,每次读取固定的记录数,具体如下:

从数据库表中的第M条记录开始取N条记录,利用Top关键字:注意如果Select语句中既有top,又有order by,则是从排序好的结果集中选择:

SELECT * 
FROM ( SELECT Top N *
FROM (SELECT Top (M + N - 1) * FROM 表名 Order by ID desc) t1 ) t2
Order by ID desc

用以上SQL语句进行分页,错误会比较少,最重要得是效率比较高。

时间: 2024-10-27 06:29:30

关于 分页出现负数解决方法及建议的相关文章

ASP Recordset 分页出现负数解决方法及建议

对于Recordset分页时出现负数的现象,相信会有很多人遇到过这个问题,有时百度.GOOGLE也不得其解,现在由我来总结一下. 出现负数,主要和游标类型有关系.(为举例方便,假设已经有一个conn.asp链接数据库的文件并且已经include)现在举一个例子,代码如下: '=======================================================           sql="Select * from 表名 where 条件 order by ID des

thinkPHP使用post方式查询时分页失效的解决方法_php实例

本文实例讲述了thinkPHP使用post方式查询时分页失效的解决方法.分享给大家供大家参考,具体如下: 昨天晚上一直没有解决的php项目中的bug,就在刚才终于搞定,在这里还需要感谢各位大神给的帮助! 具体问题描述 最近遇到一个非常棘手的问题,也是因为刚入手thinkphp.在做项目的过程中,因为需要非常多的查询条件,如果以get方式提交表单的话,会因为url长度限制而报错,所以必须使用post方式提交表单数据,但是在分页的过程中,遇到了问题,因为thinkphp自带的分页是以a标签的形式,进

PHP的Yii框架使用中的一些错误解决方法与建议_php技巧

 此文意在记录 Yii 开发过程中的小问题解决方案,不全面,不权威,不是教程.自己写过,觉得可以解决问题,以后也可能用上,就记记吧.     1. Yii 中 Js 和 Css 文件的引入.    我们就从最简单的问题开始吧,说起来也不是问题,只是语法罢了.假设我们的 js 文件都放在和 protected 同一层的 js 文件夹里,css 文件都放在和 protected 同一层的 css 文件夹里,好吧,规范就是这样的...那我们可以在对应的 view 界面按下面这样写,css 和 js 函

基于Sql Server通用分页存储过程的解决方法_MsSql

sql server2000分页方式很多,效率吗  当到达10万级以上就有些吃力了,这里暂时不例出来了 sql server2005以上就有了row_number 也是一大进步,详情如下参考 复制代码 代码如下: Sql Server2005通用分页存储过程 CREATE PROCEDURE [dbo].[Common_GetPagedList](@TableName nvarchar(100), --表名@ColumnNames nvarchar(1000) = '*', --字段名集合(全部

CI分页类首页、尾页不显示的解决方法_php实例

本文实例讲述了CI分页类首页.尾页不显示的解决方法.分享给大家供大家参考,具体如下: 看了下手册说,每次都要重新去写一次呢些$config,可以新建一个文件放到config文件夹下面,考虑了下,config这个文件夹系统会自动加载,也就是说不管你访问什么页面这文件夹里面的所有信息都会被加载,所以,要想在这个文件里面去写就需要写方法,这样即使加载如果不去加载也是没有关系的.本人没有沿用手册上的说法做. 我的思路:既然我们是在CI这框架下写的东西,而且每个控制器都会引入父类CI_Controller

WordPress自定义模板分页失效解决方法总结

WP分页失效的解决方法: 1.登陆博客后台,点击"外观"选项卡下的"编辑"选项进入主题编辑界面 2.在你的自定义模板中找到  代码如下 复制代码 <?php query_posts('showposts=9&cat=25'); ?然后改成: <?php $limit = get_option('posts_per_page'); $paged = (get_query_var('paged')) ? get_query_var('paged')

ASP.NET编译执行常见错误及解决方法汇总_实用技巧

1.检测到有潜在危险的 Request.Form 值 原因: (1)在提交数据的页面或webconfig中没有对validateRequest的属性进行正确的设置 (2)HTML里面写了两个<form>引起 解决: 方案一: 在.aspx文件头中加入这句: <%@ Page validateRequest="false" %> 方案二: 修改web.config文件: <configuration> <system.web> <pa

ASP漏洞分析和解决方法

解决 ASP漏洞分析和解决方法 有人说一台不和外面联系的电脑是最安全的电脑,一个关闭所有端口,不提供任何服务的电脑也是最安全的.黑客经常利用我 们所开放的端口实施攻击,这些攻击最常见的是DDOS(拒绝服务攻击).下面我会列出ASP的二十几个漏洞,每个漏洞都会有漏洞描 述和解决方法. 1 在ASP程序后加个特殊符号,能看到ASP源程序 受影响的版本: win95+pws IIS3.0 98+pws4 不存在这个漏洞. IIS4.0以上的版本也不存在这个漏洞. 问题描述: 这些特殊符号包括小数点,%

网站影响搜索引擎收录原因及解决方法

对于百度近期算法调整,对新站收录时间大大提高,一般网站多数引下蜘蛛三天内就能收录了首页,免去众多站长因百度长时间不收录而困扰.惊喜之余却有另一个烦劳困扰着我们,为什么百度收录了首页不收录内页.本人认为这只是百度对新站收录审核调整的关系. 以前对新站检测不通过不放出,现在是只要站不涉及黄.毒.赌以及扰乱社会治安或者危害社会的内容,百度都会在第一时间收录首页,然后对新站设定有一个观察期,过了这个观察期,自然就会放出内页.在这个观察期期间,我们这要做好网站每天定时更新原创,有续的增加网站外链.等待1-