2009年5月12日 星期二

DataSet動態排序

以下程式碼片段,可動態設定DataSet之排序欄位

有時若Sql內包含子查詢,ClientDataSet會不一SQL之Order By欄位進行資料排序,或需由畫面讓使用者決定查詢結果之排序時,即可參考以下做法....
Note:需在Dataset Open狀態下才可動態更改排序

//刪除原有之IndexName
if cdsORD.IndexDefs.IndexOf('index1') >= 0 then cdsORD.DeleteIndex('IndexName');
//將排序欄位寫進預設的INDEX裡面(欄位用分號隔開)
cdsORD.IndexDefs[0].Fields := 'Field1;Field2';
//新增index(參數:IndexName , 排序欄位 , TIndexOptions , 逆排序欄位 , CaseInsFields)
cdsORD.AddIndex('IndexName', 'Field1;Field2', [], 'Field1;Field2', '');
cdsORD.IndexName := 'IndexName';

沒有留言: