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

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
table1.Filtered:=false;
refresh;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
table1.OnFilterRecord:=Anotherfilterrecord;
table1.Filtered:=true;
refresh;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

end.

---- 此方法的主要思路就是:在运行期把OnFilterRecord事件重新指定一个事件句柄(本例中AnotherFilterRecord和OtherFilterRecord),从而使程序按不同的过滤条件过滤记录。这种方法并不要求Table1的degree字段为索引字段,对数据集不大的数据表,非常实用而简便,对数据集中记录很多的,最好还是用查询或者设置检索范围。
---- 3.设置Filter属性,过滤不同的记录

---- 以上程序过程显得有些复杂,可简单地指定Filter属性来实现,即不用OnFilterRecord事件,删除两个事件句柄AnotherFilterRecord和OtherFilterRecord的定义及相关过程,直接用过滤Filter串,将Filtered属性值设置为True,并把Button1Click和Button2Click事件修改如下:(另注:两个单引号表示串中的一个单引号)

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Table1.Filtered:=true;
Form1.Table1.Filter:=''[degree]''+''=''+''''''工程师'''''';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Table1.Filter:=''[degree]''+''=''+''''''高级工程师'''''';
end;


---- 这种方法也不要求Table1的degree字段为索引字段,没有索引支持,当记录数量比较大时,过滤的速度会受影响。Filter属性设置还支持通配符,例如:[degree]=''E*'',与Filter属性设置有关的还有FilterOption属性,它是一个集合属性,有两个成员:foCaseInsensitive(区分大小写),foNoPartialCompare(*不作为通配符)。
---- 4.使用SQL实现数据过滤(不必用Ttable组件)

---- 通过TQuery组件来使用SQL语句实现记录的过滤,大家可能对这种方法比较熟悉,这里只做简单说明,如上例中的记录筛选用一条很简单的SQL语句就能实现:

SELECT * FROM "demo.DB" demo
where demo."degree"="工程师"

---- 如果在运行期改变查询条件,则要用下面的SQL语句来实现:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(''SELECT * FROM
"demo.DB" demo'');
Query1.SQL.Add(''where demo."degree"
="高级工程师"'') ;
Query1.ExecSQL;

----   使用SQL语言可以实现条件很复杂的筛选,当记录数量很大或条件很复杂时,应尽量使用SQL语言来查询。这种通过SQL语句的过滤是一次性的。当调用TQuery的Open方法或Active:=true,TQuery返回查询结果集,之后就失去了对结果集的范围限制。当结果集中的某些记录发生改变,不满足过滤条件时,TQuery不能察觉,必须再次调用TQuery的Open方法才能实现刷新记录,过滤掉不符合条件的记录。
---- 以上几种方法各有其特定的使用场合,各有其优劣,这里只作抛砖引玉,具体还要自己仔细琢磨。另外,还可以通过以下函数或方法进行数据过滤,这里就不作介绍了,只给出其函数或过程的形式:

function FindKey(const KeyValues:
array of const): Boolean;
procedure FindNearest(const KeyValues:
array of const);
function GotoKey: Boolean;
procedure GotoNearest;
function Locate(const KeyFields: string;
const KeyValues: Variant; Options:
TLocateOptions): Boolean;

---- Delphi提供了强大的数据库开发功能,关于数据过滤技术的实现,有很
  • 上一篇资讯: 在DELPHI中用线程排序
  • 下一篇资讯: Delphi 编写Windows NT服务
  • 网学推荐

    免费论文

    原创论文

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