说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

筛选数据-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
筛选数据-Delphi资料

·设定范围·

所谓范围,就是指定一个上下界,筛选出落在上下界内的一组连续记录。为方便说明,我们先生成一个

项目,并在Form1中放入如下组件:

组件名 属性

Table1 DatabaseName:=DBDEMOS

TableName:=Customer.db

DataSource1 DataSet:=Table1

DBGrid1 DataSource:=DataSource1

本例中我们使用了Delphi自带的别名'DBDEMOS'下的一个数据库:Customer.db,这是一个记录顾客基

本信息的数据库。当我们把Table1的Active属性置为True时,在DBGrid1中会显示出该库的内容。下面我们

往Form1中放入一个Button1,编写Button1的OnClick事件如下:

procedure TForm1.Button1Click(Sender: TObject);

begin

with Table1 do

begin

KeyExclusive:=True;// 为True时不包括边界值,为False时包括边界值,缺省为False;

SetRangeStart;

Fieldbyname('CustNo').AsString:='1000'; //设定范围上界

SetRangeEnd;

FieldbyName('CustNo').AsString:='2000'; //设定范围下界

ApplyRange; //使范围生效

end;

end;

以上是设定范围的很典型的一组语句。运行程序,单击按钮后,顾客号在1000至2000之间的顾客记录被

筛选了出来。范围一旦被设定,在整个应用程序执行过程中都是有效的。当然,我们可以调用CancelRange

方法来暂时使范围失效,以后需要范围生效时,可直接调用ApplyRange方法,而不需要再次设定范围的上下

界。另外,我们可以调用EditRangeStart和EditRangeEnd的方法来改变范围的上下界。

使用范围的唯一条件是,设定范围的字段必须已建索引。对没有建立索引的字段使用范围是不允许的。

·使用过滤器·

过滤器筛选出来的记录可以是连续的,也可以是非连续的。过滤器不受索引的限制,而且即使有索引,

过滤器也不依赖,也就是说,过滤出来的记录是未经排序的。过滤器的使用非常简单,可以直接在Table组

件的Filter属性中写入包含过滤条件的字符串,并把Filtered属性置为True来启动过滤器。在上例中,我

们可以在Table1的Filter的属性框内写入:(CustNo>1000) and (CustNo<2000)

当我们把Table1的

Filtered属性置为True时,DBGrid1内将显示出顾客号在1000至2000之间的顾客记录。当过滤条件比较复

杂时,我们可以通过编写Table1的OnFilterRecord事件来实现。例如:

procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);

begin

Accept:=(DataSet[′CustNo′]>1000) and (DataSet[′CustNo′]<2000) and (DataSet[′

Country′]=′US′);

end;

运行程序,所有CustNo在1000至2000之间并且Country='US'的顾客记录被筛选了出来。在

OnFilterRecord事件中,我们可以使用条件分支语句或者循环语句,因而非常灵活,便于完成条件很复杂

的记录筛选工作。和范围一样,过滤器一旦设定,就将维持到应用程序的结束。当然,我们可以将Filtered

属性置为False来使过滤器失效。

和范围相比,过滤器方便灵活,而且不受索引限制,但正是因为没有索引支持,当记录数量比较大时,

过滤器的速度会受影响。因此

范围和过滤器各有各的适用场合。

·使用查询·

即通过TQuery组件来使用SQL语句实现记录的筛选。大家可能对这种方法比较熟悉,这里只做简单说明

,如上例中的记录筛选用一条很简单的SQL语句就能实现:

Select * from Customer

Where (CustNo>1000) and (CustNo<2000)

使用SQL语言可以实现条件很复杂的筛选,当记录数量很大或条件很复杂时,应尽量使用SQL语言来查询

和前两种方法相比,使用查询更加灵活多变,适应性更强,而且也不受索引的限制。但这种通过SQL语

句的筛选是一次性的。当调用TQuery的Open方法(或Active:=true)后,TQuery返回查询结果集,之后就

失去了对结果集的范围限制。当结果集中的某些记录发生改变(如某条记录的Custom变为3000),不满足筛

选条件时,这种方法不能马上察觉,必须再次调用TQuery的Open方法才能实现。

诺基亚创新体验中心NEIC训练团正式开班 新威胁:IE新漏洞允许网站跟踪鼠标 少编码多思考:代码越多 问题越多 [简讯] JDK 7u10发布 修复安全漏洞 搜狗茹立云:为何搜狗语音助手比Siri更精准? BlackBerry 10最终版SDK Gold发布 谷歌地图正式登陆App Store 为开发者推出SDK 你的云数据的三个最大威胁 公开叫板:Google不打算推出Win8版Gmail和Drive APP备案风波:开发者何去何从? 32位和64位的JVM 我该选择哪个呢? 黑莓“Got Game Port-a-Thon”活动将于12月22日在北京举行 专访Moti Joseph:浏览器安全的经验之谈 四大开源云平台的命运基因 FPS移动游戏:画质不是第一位,操控才是死穴 微软2013年的五个安全预测 应用成武器 王淮,大城小胖论辩HTML5 局部有小雨 技术人员创业后就不再适合继续编码了? Google Dremel vs Apache Hadoop 低功耗之争:英特尔 VS ARM NEIC-诺基亚体验创新中心 助力开发者创享新移动互联时代 Google地图主管Daniel Graf:新设计,新目标 浴火重生:OpenFeint创始人推开源平台OpenKit 紧随AWS数据仓库服务 Rackspace力鼎Cloudant 创业者谈:畏惧失败,但也要拥抱失败 谷歌赢得一场战斗 苹果能否赢得战争? 走进大学校园:是什么让学生成为独立开发者? 移动周报:为什么说独立开发者才是光明康途? MapFan eye:看日本地图导航应用的新玩法 数据会被清空:部分三星、魅族手机存安全漏洞 IE10简化文件访问 支持FileReader API 文档结构的问题 抢救,可以用vb.net写一个用户控件或动态库,在asp.net里调用吗? 请问大家一个问题 如何解压Linux下的.zip文件? 下接列表框的问题 来这里几天了,看大家都是很消极的,为什么? 可以动态增加<option>吗? datagird高手的问题! 数据库导入问题。在线等!急啊!!! 高手来帮忙 為何調用data module中的adoconnection會出錯。 怎样把几张jpg图转换成avi的文件 ★☆pb8异机连接sql server数据库的问题???50分献 菜鸟求问,急需回答!!! 有哪位高手知道 哪位同志能提供软件工程电子文档教程下载的站点给我 菜鸟问题 简单问题 ASP里流媒体上传问题 初学VC得困惑 用第三方类MultipartRequest上传文件时,怎样实现根据用户填写的表单来决定上传路径 当我插入一个usb设备,系统装好驱动后注册表会有变化吗? 如何解决BUTTON重入的问题。 关于如何获得文件域中的文件名!!!!!!!!!!!!!!!!! 游戏编程初学者的作品.(弹球) 有没有汨罗的朋友呀?????? 在线等,触发器如何使用? 请问ActiveX controls event发出的消息怎样在container里接收 UNIX的cc编译结果: [请问]i586是什么意思?PPC又是什么?另外RedHat9无法安装的问题…… 不知道大家都玩不玩新闻组,给大家提供几个中文新闻组地址并讲一下使用方法,感觉比BBS好玩! 高分求助,现谢谢了。 !急关于CrystalReport 下面这样类型转换,居然可行, 我下面的问题解决了 ORACLE统计问题 腊肉是月老啊,单身的哥哥们找腊肉拉红线啊! 新闻搜索 using namespace std; 微星845 Ultra-C 支持P4赛扬2.0的吗? 请问哪里有关于cc的比较好的文档资料. 水晶报表的问题!!!!!!!!!!!! 关闭Jbuilder9时,会弹出微软拼音输入法的关于信息框,如何解决? TreeView的删除问题/// 怎样在delphi里使用windows定义的结构体 问个问题 顺便散分 sub main问题 郁闷,一夜起来信誉分掉了一大截,散分 请问UNIX下makefile 是怎么一回事 我在学习C#,不过基础不好,很吃力!中秋快乐! 如何防止文件被访问?谢谢! 勿必是什么意思 我想问一下,情之将至,其行勿反.这个句子是什么意思啊?女朋友给的一句话,不懂呀! 为何夏侯敦称“完体将军” 文理分班的作文 议论文600字左右 速度啊!急! 甲、乙两仓存粮的吨数之比是9:11,从乙仓运出15吨后,甲、乙两仓存量的吨数比变为3:2,原来甲仓存量( )吨列式 甲,乙两仓库存粮吨数比是9:11,从乙库运出15吨后,甲,乙两仓库存粮吨数比变为3:2.问:原来甲仓库存粮多少吨? 文娱晚会中,学生的节目有9个,教师的节目有2个,如果教师的节目不排在最后1个,那么有多少种排法? 精细与精巧在词义上有什么区别 精致与精巧的相同之处 对联 痴人说梦话梦说人痴"痴人说梦话梦说人痴" 谁能对出来? 甲乙两个仓库存粮的比是9比11,从乙仓库运出15吨后,则甲乙两个仓库存粮比是3比2 局势动荡民众对政治改革灰心 埃及再现南华早报:“监听事件”削弱美国软实力外媒:十八届三中全会或为“革命性”改美研发新型间谍机 可一小时内到达全球地方接力大部门制改革 简政放权与加强未来中国3.9亿农民将市民化 城市越国务院将专项督查最低生活保障政策落实美国国务卿克里促埃及政府勿延长全国紧最新消息:孙杨已经被带离下城交警大队未来中国3.9亿农民将市民化 城市越e融在线:“三大亮点”开启个人网上信梁文博进正赛国青点杀新西兰乌拉圭产神锋这状态 迫不及待乌拉圭巴西大胜国奥再度集中将战西亚劲旅冰上母牛变红土女王国青首秀小胜新西兰科斯塔拒马竞向往蓝军新蒙迪欧公开赛无奈转商业重生之娱乐魔法师宫廷营养师超级医仙中国记忆爱上逃跑王妃老爷有喜倒计时2012超级服务器滥情公爵虐情妃家有龙夫碧落仙府沧源崖画旅游汕头市小公园旅游香园旅游澄海旅游曹雪芹纪念馆旅游辽阳市博物馆旅游辽阳白塔旅游无锡古运河旅游水浒城旅游北大荒现代农业园旅游武汉天地旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘