不连数据库进行查询分页的思路-小周
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 技术类


不连数据库进行查询分页的思路

发表时间:2008/6/28 8:09:27 评论(1) 浏览(4797)  评论 | 加入收藏 | 复制
   
摘 要:
正 文:

看了不少介绍,知道set rs=conn.execute(sql)的执行效率比rs.open sql,conn,1,1要高很多,但是set rs=conn.execute(sql)这种执行方式也有很多不足,首先它不具有分页属性,比如rs.pagesize,rs,absolutepage等属性,这样的话,通过这种方式set rs=conn.execute(sql)执行的速度虽然快了,但是却不能按普通方式进行分页,怎么办呢??
  第二天,查了一下网上的资料,突然想到是否可以把所需数据提到一个数组里,然后对数组进行分页呢?首先把set rs=conn.execute(sql)查询出来的结果通过rs.getrows()取出来附给一个数组,于是我就在各网站上找分页的帖子,虽然发现不少高效率分页的帖子(包括存储过程等),可结果发现全都是需要通过SQL执行的,即翻页的时候也需要执行SQL语句,此时头都晕了,优化的也只是SQL语句,此时实在没办法,只好自己努力了!终于完成了一个数组分页的粗稿,代码不是很完善,让大家一起来研究一下!代码如下:
首先有一个index.asp查询页:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body><FORM id="SearchForm" name="SearchForm" method="post" action="search.asp?act=cha">
<div class=input>
<input id=keyword onmouseover=this.focus() title="快速搜索您的留言记录" onfocus=this.select() class="in"  maxlength=35 name=keyword />
<select style="width:120px;margin-top:-25px" name="ChannelID">
<option value="k2">留言人</option>
<option value="k1">留言内容</option>
</select>
  <Input id=search_btn type=submit value="查询">
</div>
</FORM>
</body>
</html>
search.asp的代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<%
If request.querystring("act")="cha" Then
search_type=request.FORM("ChannelID")
keywords=request.form("keyword")
if search_type="k1" then '按照留言内容搜索
sql="select * from gbook_rec where g_content like '%"&keywords&"%'"
ElseIf search_type="k2" then
'if search_type="k2" then '按照留言人搜索
sql="select * from gbook_rec where g_name like '%"&keywords&"%'"
Else
response.end
end If
Set rs=conn.execute(sql)
If  rs.eof And rs.bof Then
%>
<div class="search">没有查找到您要的记录!</div>
<%
response.End
Else
aResults=rs.getrows()'取出数据放入数组ROW中
application("data")=aResults
Set rs=nothing
conn.close '关闭数据库
End IF
End If

aResults=application("data")
Dim i,row,pagesize,epage,numb,pagecount,fenye
numb=UBound(aResults,2)+1 '总记录行数
pagesize=2 '每页条数

If numb Mod pagesize = 0 Then '判断总页数
pagecount=Int(numb/pagesize)
Else
pagecount=Int(numb/pagesize)+1
End If

epage=request.querystring("page")

If epage="" Then epage=1    

For i=(epage-1)*pagesize To epage*pagesize-1
If i>UBound(aResults,2) or i<0 Then Exit for
%>
<div class="content">
<ul><li>记录<%=i+1%></li>
  <li>留言人:<%=aResults(1,i)%></li>
  <li>内容:<%=aResults(2,i)%></li>
  <li>时间:<%=aResults(3,i)%></li>
  <li>IP:<%=aResults(5,i)%></li>
</ul>
</div>
<%
Next
If numb>pagesize Then
fenye="<a href=search.asp?page=1>首页</a>  "
fenye=fenye&"<a hre


Access软件网交流QQ群(群号:198465573)
 
 相关文章
子窗体分页显示  【网络  2010/4/27】
报表分页总计及补空行示例  【红尘如烟  2010/9/18】
[access报表]Access分页报表打印\Access指定报表...  【zch  2011/11/18】
分页符使用例子  【纵云梯  2012/2/27】
二级Access技巧:大数据Access数据表分页方法  【缪炜  2012/8/24】
【Access源码示例】一个类似网页上的分页显示的例子;Acces...  【红尘如烟  2012/8/24】
常见问答
技术分类
相关资源
文章搜索
关于作者

小周

文章分类

文章存档

友情链接