网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
数据过滤技术在Delphi中的使用
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

  使用Delphi可以方便而又快速地建立强大的数据库应用程序,Delphi的数据库应用程序开发,无论是客户/服务器数据库还是本地数据库,必须用到组件(组件的英文为Component,有叫控件、元件、构件的,本文称组件)TDataSource和Ttable,其中Ttable组件中有多种过滤记录的方法,现用最简单例子分别说明。
---- 1.给字段设置限制值,过滤记录

---- 下面是Delphi4帮助中的一个例子,设置了数据表Table1中的"City"字段检索范围,即上限值和下限值。范围一旦被设定,在整个应用程序执行过程中都是有效的。也可以调用CancelRange方法暂时使范围失效,以后需要范围生效时,可直接调用ApplyRange方法,而不需要再次设定范围的上下限。另外,可以调用EditRangeStart和EditRangeEnd的方法来改变范围的上下限。

with Table1 do
begin
SetRangeStart; { Set the beginning key }
FieldByName(''City'').AsString := ''Felton'';
SetRangeEnd; { Set the ending key }
FieldByName(''City'').AsString := ''Scotts Valley'';
ApplyRange; { Tell the dataset to establish the range }
end;


---- 需要特别说明的是,如果Table1是Paradox表或是dBASE表,在调用SetRangeStart,SetRangeEnd,ApplyRange,CancelRange等方法时,只能为Table1表中的索引字段或定义的索引指定相应的字段值,以设定检索范围,也就是说"City"字段必须是索引字段。另外要说明的是,KeyExclusive属性值为True时不包括边界值,为False时包括边界值,缺省为False。
---- 2.在OnFilterRecord事件中过滤记录

---- 例如要对某数据表(Table)的Degree字段进行"工程师"和"高级工程师"的数据过滤(或称筛选数据),可以通过下面的程序具体实现。

unit Unit1;

interface

uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, Db, DBTables, StdCtrls;

type
TForm1 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;//指定表,如Demo.db
DBGrid1: TDBGrid;//用于显示记录
Button1: TButton;//按下后TDBGrid
中显示所有"工程师"的记录
Button2: TButton;//按下后TDBGrid
中显示所有"高级工程师"的记录
Button3: TButton;//按下后TDBGrid
中显示全部记录
Button4: TButton;//按下后退出程序
procedure Table1FilterRecord
(DataSet: TDataSet; var Accept: Boolean);
procedure AnotherFilterRecord
(DataSet: TDataSet; var Accept: Boolean);
//指定"高级工程师"的事件句柄
procedure OtherFilterRecord(DataSet: TDataSet;
var Accept: Boolean);//指定"工程师"的事件句柄
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);

private
{ Private declarations }
public

{ Public declarations }
end;


var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Table1FilterRecord
(DataSet: TDataSet;
var Accept: Boolean);
begin
accept:=dataset[''degree'']=''总经理'';
//初始的过滤条件
end;

procedure TForm1.AnotherFilterRecord
(DataSet: TDataSet;
var Accept: Boolean);
begin
accept:=dataset[''degree'']=''高级工程师'';
end;

procedure TForm1.OtherFilterRecord
(DataSet: TDataSet;
var Accept: Boolean);
begin
accept:=dataset[''degree'']=''工程师'';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
table1.OnFilterRecord:=Otherfilterreco
  • 上一篇资讯: 在DELPHI中用线程排序
  • 下一篇资讯: Delphi 编写Windows NT服务
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号