摘要载入中…    请稍等…












内容载入中…    请稍等…

如长时间看不到内容,请关闭浏览器,重新打开此页!

芯友首页 应用软件 编程开发 网络硬件 资源下载 动漫音乐 精美图库 芯友论坛 视频教程 电脑技术QQ群:72845454
 ★★photoshop学友-史上最强播放器★★
 位置:编程开发>Deiphi>Deiphi数据库编程
◎→ 本类最新
asp + sqlserver 分页方法(不用
在Delphi中用拼音首字符序列来实
在Delphi中实现多重查询
用DELPHI编程访问SQL SERVER数据
加密ACCESS数据库增加安全性
加密ACCESS数据库增加安全性
文本数据导入数据库的方法
◎→相关资源
C语言入门视频教程
C#编程WinForm入门视频
Asp.net入门视频教程下载
VC++编程视频教程下载
VB窗体文章
HTML入门教程
Deiphi实例教程
Deiphi窗体文章
Deiphi数据库编程
Deiphi网络编程
Deiphi图形图象文章
Deiphi系统文件
◎→ 热门资源
用拼音首字符来实现检索功能
将JPEG文件转为Windows墙纸
对DELPHI图形编辑技巧二则
Delphi编程实现3D图形修饰技术(2
Delphi编程实现3D图形修饰技术
Delphi实现通用的定时自动关机程
Delphi实现通用的定时自动关机程

Delphi筛选数据


日期:2008-10-20 22:08:11    来源:
   
 ·对DELPHI图形编辑技巧二则 ·筛选打印机搜索结果
 ·浅谈Delphi中进程间的数据共享
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的方法来改变范围的上下界。

  使用范围的唯一? 是,设定范围的字段必须已建索引(Rainbow的话:这些使用范围的时候必须的)。对没有建立索引的字段使用范围是不允许的。

使用过滤器
  过滤器筛选出来的记录可以是连续的,也可以是非连续的。过滤器不受索引的限制,而且即使有索引,过滤器也不依赖,也就是说,过滤出来的记录是未经排序的。过滤器的使用非常简单,可以直接在Table组件的Filter属性中写入包含过滤条件的字符串,并把Filtered属性置为True来启动过滤器。在上例中,我们可以在Table1的Filter的属性框内写入:(CustNo1000) and (CustNo2000) ,当我们把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 (CustNo1000) and (CustNo2000)
  使用SQL语言可以实现条件很复杂的筛选,当记录数量很大或条件很复杂时,应尽量使用SQL语言来查询。

  和前两种方法相比,使用查询更加灵活多变,适应性更强,而且也不受索引的限制。但这种通过SQL语句的筛选是一次性的。当调用TQuery的Open方法(或Active:=true)后,TQuery返回查询结果集,之后就失去了对结果集的范围限制。当结果集中的某些记录发生改变(如某条记录的Custom变为3000),不满足筛选条件时,这种方法不能马上察觉,必须再次调用TQuery的Open方法才能实现。

 [1]

Delphi编程实现3D图形修饰技术(2)

安装ISAPI筛选器

实战Delphi数据网格色彩特效

--->腾讯QQ IP数据库 2007.05.13┊附带IP数据维护工具V1.1┊珊瑚虫精简绿色特别版
--->腾讯QQ IP数据库 2007.05.06┊附带IP数据维护工具V1.1┊珊瑚虫精简绿色特别版
--->QQ IP数据库 2006.6.13 珊瑚虫精简版
--->GrabFile V3.9 Final┊强大可设置筛选图象文件下载工具┊简体中文绿色特别版
--->CIH破坏的硬盘数据修复工具
Tags:  Delphi 筛选 数据
{$enumber$}
芯友网版权所有 1999-2006 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 联系我们