可以用索引嘛,你只要设TclientDataset中的indexfieldnames属性就可以了。
如你要按 "BH" 字段进行排序那么就 Clientdataset1.indexfieldnames:='bh';
就可以以。

解决方案 »

  1.   

    可以通过动态建立索引进行,AddIndex,只存在于内存中。
      

  2.   

    To cjf:
      你可不可以说的详细一点?
      我有预感,你的答案将是极为有用的。这50大洋注定属于你。
      但是,你能否说的详细一点呢?
      
      

  3.   

    with ClientDataset1 do
    begin
      Close;
      CommandText:='select * from table order by FieldName'
      Open;
    end;
      

  4.   

    我同意saoren的观点,我认为这是最优的方法。
    不过你要保证你的应用服务器端的datasetprovider(数据提供者)的potions中的pAllowcommandText属性为True.建议:尽量使用Sql编写数据库程序。
      

  5.   

    开个玩笑,这50分应该是我和sanren共同分享吧。呵呵!
      

  6.   

    升序
    select * from table order by Fieldname ASC;
    降序
    select * from table order by fieldname DESC;
      

  7.   

    问一个问题,如果我的clientdataset不是通过Provider提供数据的,而是采用
    独立的cds文件加载的,那么commandtext不就没法用了吗?
    这种情况下,如何作YIYU的方法是可以的,但是只能作升序,不能作降序,怎么办?
      

  8.   

    对不起,开始我不太清楚你是这样的结构,但这样应该是可以的,你试一下:
    with clientdataset1 do  
     with IndexDefs do 
       begin
          Clear;
          with AddIndexDef do begin
            Name := 'Fld1Indx';
            Fields := 'Field1';
            Options := [ixdescending];  //降序
          end;
      end;
      

  9.   

    在取得数据后,加入索引(是建在内存中的)
    ClientDataSet1.AddIndex('a','yourfield1',[],'','',0);
    ClientDataSet1.AddIndex('b','yourfield2',[],'','',0);
    ClientDataSet1.AddIndex('c','yourfield3',[],'','',0);
    然后就可以指定ClientDataSet1的indexName属性对数据进行排序了:
    ClientDataSet1.IndexName='a';