table属性中有个indexfieldname的,设置了就可以

解决方案 »

  1.   

    AdoTable里面有的
    myTable.Sort:=myDBGrid.SelectedField.FieldName+' ASC';
      

  2.   

    可以在SQL语句中 select * from ... where ... order by ... 
      

  3.   

    这是一个给TClientDataSet排序的过程,可以参考一下  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      //DBGrid.DataSource.DataSet is TClientDataSet*********************************
      //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      procedure ClientDataSetOrder;
      begin
        TDBGrid(Column.Grid).Tag := TDBGrid(Column.Grid).Tag xor Round(Exp(Column.Index * Ln(2)));
        with (TDBGrid(Column.Grid).DataSource.DataSet as TClientDataSet) do
        begin
          if Column.Field.DataType<ftAutoInc then
          begin
            if (TDBGrid(Column.Grid).Tag and Round(Exp(Ln(2) * Column.Index)))=0 then
            begin
              AddIndex(Column.FieldName + 'InxDES', Column.FieldName, [ixDescending]);
              IndexName := Column.FieldName + 'InxDES';
              Result := 2;
            end else
            begin
              AddIndex(Column.FieldName + 'InxASC', Column.FieldName, []);
              IndexName := Column.FieldName + 'InxASC';
              Result := 1;
            end;
          end;
        end;
      end;