回首页
◎ 设为首页  
◎ 收藏本站  
◎ 联系我们  
首页 理财故事 专家点金 精打细算 我家财经 参考案例 生活 黄金 银行 保险 外汇 股票 基金 债券 期货 彩票 社保
论坛 创业人生 答疑解惑 商机无限 名人之路 科技致富 职场 收藏 古玩 字画 邮品 赏石 珠宝 旅游 汽车 科普 法规
网址 家居装饰 时尚丽人 家庭健康 大众饮食 电脑网络 数码 建站 娱乐 笑料 图片 文学 文摘 游戏 轶事 影音 链接
    首 页  理财之道  激情创业  银行保险  证券投资  收藏博览  消费指南  政策法规  休闲娱乐  科技之家  网站社区  
  当前位置:首 页 >> 科技之家 >> 建站宝典 >> ASP使用Filter实现信息的二次检索
热 门 排 行
asp代码-注册登陆代码
中国明月网络提供8M永..
用透明Flash装扮好QQ..
HTML代码大全推荐
如何使网站顺利登录百度推荐
精彩教程:LOGO的制作..推荐
小区宽带主要常见故障..
网页制作学习入门教程..
用Flash制作一个网站..
SQL Server SQL语句导..
最 近 更 新
站长应如何定位自己的..
google优化经验:让广..
百度联盟主题推广优化..
MySQL手动安装方法与..
学习完全掌握纯CSS布..
CSS编写过程中常见的1..
用Css来制作一个更漂..
Google推广需要知道的..
垃圾站长和垃圾站的前..
如何使网站流量稳步飙升
相 关 链 接
理财 基金 债券
金市 汇市 保险
收藏 期货 银行
     
最 新 推 荐
向马云学习如何做网站..推荐
做内容有价值的网站才..推荐
在网页中插入视频的方..推荐
在Access数据库中使用..推荐
网页小知识:注册/登..推荐
精彩教程:LOGO的制作..推荐
搜索引擎优化:关键词..推荐
网站设计:谈谈网页的..推荐
Flash中调用XML程序实..推荐
什么形式的网站是更有..推荐
站 内 搜 索
关键词

搜索方式

搜索范围

精确匹配
ASP使用Filter实现信息的二次检索

来源:居家理财网 等级:默认等级
发布于2007-10-05 08:00 被读41次 【字体: 】〖 访问论坛
思考一个问题:怎么实现在第一次检索的基础上进行二次检索?

通常,我们的做法是第一次检索时保存检索条件,在第二次行检索时组合两次检索条件对数据库进行一次新的查询,如:

第一次检索:Select * from table where age>18
第二次检索:Select * from table where age>18 and name like 'zh%'

这样做虽可以实现我们所要的结果,但效率上个人认为却大打了折扣!

能不能缓存第一次检索的记录集,第二次检索时只在缓存的记录集上进行,而不是重新对数据库进行查询?

RecordSet对象有个属性Filter,它的作用是通过添加条件以控制欲显示的记录集,但并不影响原本的记录集!我们来看下怎么用它实现二次检索:

<%
Dim oConn,oRs
Set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db1.mdb")
Set ors = Server.CreateObject("ADODB.RecordSet")
ors.Open "select * from t1 where age>20",oConn,1,2

Response.Write "一次检索:select * from t1 where age>20<br/>"
Response.Write "----------------------------------<br/><br/>"
Do while not ors.Eof
    Response.Write ors("name") & ":" & ors("age") & "<br/>"
    ors.MoveNext
Loop
Response.Write "总计:" & ors.RecordCount & "<br/>"
Response.Write "----------------------------------<br/><br/>"


Response.Write "二次检索:Filter(name like '王%')<br/>"
Response.Write "----------------------------------<br/><br/>"
ors.Filter = "name like '王%'"
If not(oRs.Eof and ors.Bof) Then ors.MoveFirst
Do while not ors.Eof
    Response.Write ors("name") & ":" & ors("age") & "<br/>"
    ors.MoveNext
Loop
Response.Write "总计:" & ors.RecordCount & "<br/>"
Response.Write "----------------------------------<br/>"

ors.Close
Set ors = Nothing
oConn.Close
Set oConn = Nothing
%>

结果:



但这还有一个问题:很多情况下两次检索并不是同时进行的,而是在第一次检索完成后手动输入条件再进行二次检索,所以我们得想办法在二次检索时第一次检索的记录集仍存在!我们可以用Session对象!将Connection对象和RecordSet对象都保存在Session中,实现如下:

List.asp:
<%
Set Session("conn")=Server.CreateObject("ADODB.Connection")
Session("conn").Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db1.mdb")
Set Session("rs") = Server.CreateObject("ADODB.RecordSet")
Session("rs").Open "select * from t1 where age>20",Session("conn"),1,2

Response.Write "一次检索:select * from t1 where age>20<br/>"
Response.Write "----------------------------------<br/><br/>"
Do while not Session("rs").Eof
    Response.Write Session("rs")("name") & ":" & Session("rs")("age") & "<br/>"
    Session("rs").MoveNext
Loop
Response.Write "总计:" & Session("rs").RecordCount & "<br/>"
Response.Write "----------------------------------<br/><br/>"
%>
<form action="search.asp" method="post" name="form1" target="_blank">
  二次检索:
    <input name="f" type="text" id="f">
  <input type="submit" name="Submit" value="提交">
</form>

Search.asp:
<%
Response.Write "二次检索条件:" & Trim(Request("f")) & "<br/>"
Response.Write "----------------------------------<br/><br/>"

Session("rs").Filter = ""
Session("rs").Filter = Trim(Request("f"))
If not(Session("rs").Eof and Session("rs").Bof) Then Session("rs").MoveFirst
do while not Session("rs").Eof
    Response.Write Session("rs")("id") & ":" & Session("rs")("name") & "<br/>"
    Session("rs").MoveNext
loop
Response.Write "总计:" & Session("rs").RecordCount & "<br/>"
Response.Write "----------------------------------<br/>"
%>


结果:

ASP使用Filter实现信息的二次检索

参考文章:

1.ado多次按条件使用一个记录集中的数据的方法:http://www.webjx.com/htmldata/2005-08-05/1123195121.html
2.ado 记录集对象的filter属性使用中需注意的地方:http://www.webjx.com/htmldata/2005-12-17/1134812771.html

 出处:mzwu


(您想天天免费看到如此及时全面的资讯吗?请点击此处将居家理财网加入您的收藏夹就可以了。点击此处将居家理财网设为您的上网首页。)
  居家理财网-- www.jj86.com

※非常感谢您阅读本页!※内容仅供参考,不构成任何行为依据※!暂无相关专题

上一篇:通过实例学习ASP的对象复制
下一篇:使用Java动态创建ODBC数据源

共有评论 0 条 网友评分 0分 查看全部

【发表评论】 评分:1分 2分 3分 4分 5分


 版权申明
1、 发表文章作品必须依法行事;所有文章及相关评论仅代表作者本人观点,与本站立场无关。
2、 本站刊登该文章只为交流之用,无任何营利目的,如有侵犯或不妥,请直接与我们联系。
3、 原创文章或评论版权归本站和作者共有;转载的文章及其它作品,版权归原发表单位及作者所有。
4、 由于来自于网上部分文章无法查证原作者和出处,如署名或出处有误,请直接与我们联系。
5、 如果转载,务必注明作者与出处;从本站转载请标注:文章来源:居家理财网
论坛内容更精彩,欢迎参与讨论交流!
网址大全 网上投稿 广告服务 服务条款 人才招聘 笑话大全 设为首页 加入收藏夹 友情链接 网站建设
本站永久域名:☆www.jj86.com Rss 2.0
      Copyright © 2004-2005 居家理财网 All Right Reserved.吉ICP备05003931号
     
 推荐↑ 关闭╳
 推荐↑ 关闭╳