如何解决ASP Recordset 分页出现负数
发布时间:2023-12-25 02:27:30 所属栏目:Asp教程 来源:DaWei
导读: 对于Recordset分页时出现负数的现象,相信会有很多人遇到过这个问题,有时百度、GOOGLE也不得其解,现在由我来总结一下。
出现负数,主要和游标类型有关系。(为举例方便,假设已经有一个
出现负数,主要和游标类型有关系。(为举例方便,假设已经有一个
对于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 '游标移到最前 从数据库表中的第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语句进行分页,错误会比较少,最重要得是效率比较高。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐