Delphi数据集过滤技巧

cnngogje007

cnngogje007

2016-01-29 14:09

Delphi数据集过滤技巧,Delphi数据集过滤技巧
 
 当我们在操作数据集时,往往需要对数据进行筛眩例如:一个名为Customer的数据表,它具有CustNo、CustName、Country、Address、Phone、State、TaxRate等字段,如果只想查看国别为China或顾客号大于1000的顾客记录,就需要对数据集进行过滤。经总结,有下面这些过滤方法:
    一、利用TTable和TQuery的Filter属性
    1.在设计时设置Filter属性
    例如,设置Filter为:Country=′China′然后改变Filtered属性为True(注意,Filtered为True时过滤才有效)。则只能看到对应的Country字段内容为‘China’的记录。
    设置Filter时可以使用的操作符有:<、>、<=、>=、=、<>、AND、OR、NOT。
    例如,设置Filter为:CustNo>=1000andCustNo<=5000,则只能看到顾客号在1000与5000之间的顾客记录。
    2.在程序运行期间进行动态过滤
    要在程序运行时改变Filter属性,这包括两种情况:
    (1)操作符右边为常量,例如:Table1Filter:=′State′+′=′+′′′HI′′′;
   注意:字符串常量必须用三对单引号括起来。
    (2)操作符右边不为常量,可能是通过一个变量指定的值,或由一输入框给出的值。这时需要用到Format函数。其代码形式为:Table1Filter:=Format(′State′+′=′+′′′%S′′′,[StateValue]);其中StateValue为已经赋值的一个字符串变量,也可以为其他形式,例如:Edit1Text。
    二、用ApplyRange筛选数据集的记录
    执行下面这段代码,将只能看到顾客号在1000至5000之间的顾客记录。组成该例程的几个过程为:        
    ApplyRange,SetRangeStart,SetRangeEnd。
    Table1SetRangeStart;
    Table1[′CustNo′]:=1000;
    Table1SetRangeEnd;
    Table1[′CustNo′]:=5000;
    Table1ApplyRange;
    注意:该过程只适用于索引的字段。如果想基于非索引字段筛选,则不妨使用一点小花招:建立假索引。实现的方法为:Table1.IndexFieldNames:=字段名;Delphi还提供了简单的调用SetRangeStart、SetRangeEnd和ApplyRange的方法,例如:Table1.SetRange([Edit1.Text],[Edit2.Text]);
    三、用OnFilterRecord事件筛选OnFilterRecord事件允许按非键控字段建立筛选程序,例如:
  procedure TForm1.Table1FilterRecord(DataSet:TDataSet;varAccept:Boolean);
  begin
  Accept:=DataSet[′State′]=′CA′;
  end;
    四、用TQuery控件的SQL语句
    1.SQL语句中不包含变量和参数
  Select*fromCustomer
  WhereCustNo>=1000and CustNo<=5000
    2.SQL语句中包含参数
  Select*fromCustomer
  WhereCustNo>=:CustNo
  在运行期间给参数CustNo赋值。
     3.SQL语句中包含变量
      这时向TQuery控件添加SQL语句的代码应当这样写:
   Query1.Close;
   Query1.SQL.Clear;
   Query1.SQL.Add(Format(′Select*fromCustomer′+′′+′whereState=′+′′′%S′′′,[StateValue]));
   Query1.Open;在上面的四种方法中,第四种功能最强大,使用最灵活。( 
展开更多 50%)
分享

猜你喜欢

Delphi数据集过滤技巧

Delphi
Delphi数据集过滤技巧

Delphi中的Access技巧集

电脑网络
Delphi中的Access技巧集

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用DELPHI的RTTI实现数据集的简单对象化

编程语言 网络编程
用DELPHI的RTTI实现数据集的简单对象化

Oracle 数据库操作技巧集

编程语言 网络编程
Oracle 数据库操作技巧集

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

DELPHI技巧

编程语言 网络编程
DELPHI技巧

Delphi技巧点滴

编程语言 网络编程
Delphi技巧点滴

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《火焰纹章if》暗夜王国刷钱方法详解攻略

《火焰纹章if》暗夜王国刷钱方法详解攻略

Delphi3.0中的函数调用模式

Delphi3.0中的函数调用模式
下拉加载更多内容 ↓