博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ClientDataSet建立索引和排序
阅读量:6201 次
发布时间:2019-06-21

本文共 2441 字,大约阅读时间需要 8 分钟。

可用ClientDataSet.AddIndex或ClientDataSet1.IndexDefs.AddIndexDef建立索引。

AddIndex(

const Name:string;                   //索引名

const Fields:string;                    //索引字段,多个用;隔开

options:TIndexOptions;              //选项[IxPrimary,IxUnique,ixDescending,ixCaseInsensitive]

const  DescFields:string;             //降序排列字段

const CaseInFields:string            //不区分大小写字段

const GroupingLevel:integer        //分组级别

);

AddIndexDef用法跟上面类似,在with...do中设置相应属性

with ClientDataSet1.IndexDefs.AddIndexDef  do

begin    

name:string;

CaseInsFields: string ;

DescFields: string; 

Expression: string ;

Fields: string; 

Options: TIndexOptions;

GroupingLevel: Integer;

end;

下例中使用AddIndex方法,如图:

***************************************************************************************************************************

具体操作:

***************************************************************************************************************************

DBGrid1.DataSource->DataSource1.DataSet->ClientDataSet1.ProviderName->DataSetProvider1.DataSet->

SQLDataset1.SQLConnection->SQLConnection1具体数据库(这里连接的是oracle中的EMP表);

SQLDataSet1.CommandText:=SELECT * FROM EMP;ClientDataSet1.Active:=true;

***************************************************************************************************************************

主要代码:

***************************************************************************************************************************

procedure TForm3.Button1Click(Sender: TObject);begin  if ClientDataSet1.IndexName='Index1' then  begin     Button1.Caption:='ENAME升序EMPNO降序';     ClientDataSet1.IndexName:='Index2';  end else  begin    ClientDataSet1.IndexName:='Index1';    Button1.Caption:='EMPNO升序ENAME降序';  end;end;procedure TForm3.DBGrid1TitleClick(Column: TColumn);beginif not Column.Field.IsBlob then // 不能给大二进制字段建立索引或排序    ClientDataSet1.IndexFieldNames := Column.FieldName;end;procedure TForm3.FormCreate(Sender: TObject);begin   //EMPNO升序排序ENAME降序排列  ClientDataSet1.AddIndex('Index1','EMPNO;ENAME',[],'ENAME');  //也可写成  // ClientDataSet2.AddIndex('Index1','EMPNO,ENAME',[ixDescending],'ENAME');//ixDescending被忽略  // ENAME升序,EMPNO降序  ClientDataSet1.AddIndex('Index2','EMPNO;ENAME',[],'EMPNO');  ClientDataSet1.IndexName:='Index1';end;

注意:如果只想对当想缓冲区中的数据排序要用TempClientDataSet.CloneCursor方法克隆到TempClientDataSet或直接用TempClientDataSet.Data:=ClientDataSet1.Data,把ClientDataSet1缓冲区中的数据复制到TempClientDataSet中,ClientDataSet2中的数据就与数据源分离了,再对TempClientDataSet排序。如果不分离数据源就排序,ClientDataSet1会把表中的所有数据读到本地再排序。

转载于:https://www.cnblogs.com/sun998/p/6511417.html

你可能感兴趣的文章
软件测试工程师的分类从新手到专家
查看>>
面部识别技术使得公众的匿名性消失
查看>>
《数据科学:R语言实现》——2.8 获取Facebook数据
查看>>
锤子手机 Bootloader 被国内越狱团队盘古破解
查看>>
《TCP/IP路由技术(第一卷)(第二版)》一1.8 总结表:第1章命令总结
查看>>
《Linux设备驱动开发详解 A》一一3.2 Linux 2.6后的内核特点
查看>>
部署 Docker 前必须问自己的四个问题
查看>>
《UG NX10中文版完全自学手册》——1.5 文件操作
查看>>
《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.6节Socket网络通信
查看>>
比特币的交易价格节节攀升,发展势头却比以太坊弱?
查看>>
未来 5 年有颠覆性的 IT 技术都在这里
查看>>
《CCNP TSHOOT 300-135学习指南》——1.5节复习题
查看>>
《UVM实战》——2.2节只有driver的验证平台
查看>>
《威胁建模:设计和交付更安全的软件》——3.7 权限提升威胁
查看>>
【源资讯 第31期】科技界大招不断,程序员要约会还是要工作?
查看>>
《Oracle高性能自动化运维》一一1.4 Linux内存体系与Oracle内存空间
查看>>
《HTML5移动应用开发入门经典》—— 第1章 使用HTML5改进移动Web应用的开发
查看>>
自己动手构造编译系统:编译、汇编与链接1.1 从编程聊起
查看>>
Guava 是个风火轮之基础工具(2)
查看>>
《TensorFlow技术解析与实战》——1.3 深度学习的入门方法
查看>>