日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ClientDataSet建立索引和排序

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ClientDataSet建立索引和排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可用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); beginif ClientDataSet1.IndexName='Index1' thenbeginButton1.Caption:='ENAME升序EMPNO降序';ClientDataSet1.IndexName:='Index2';end elsebeginClientDataSet1.IndexName:='Index1';Button1.Caption:='EMPNO升序ENAME降序';end; end;procedure TForm3.DBGrid1TitleClick(Column: TColumn); begin if 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

總結

以上是生活随笔為你收集整理的ClientDataSet建立索引和排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。