大虾们:
   我有一个DB数据库,想把他以一个字段(类型为short )排序?
该怎么办?

解决方案 »

  1.   

    对啊,使用Tquery时,他的SQL语句设为:select * from tablename order by fieldname
      

  2.   

    order by 是把查询的结果排序,把数据库排序?
      

  3.   

    用Database Desktop来做,在tools菜单中有一Sort
      

  4.   

    那如果我只用table控件,不用query控件 可以进行排序么?
      

  5.   

    **********抢分行动***********
    碰到问题查不到,花了半天时间作了一个,不敢独享。
    ADO类的数据集有Sort,但是TClientDataSet没有,故作。procedure SortCDS(Column:TColumn);
    function FindColumn(Grid:TDbGrid;Name:string):TColumn;
    var
      i:integer;
    begin
      Result:=nil;
      for i:=0 to Grid.Columns.Count-1 do
        if Grid.Columns.Items[i].FieldName=Name then
          Result:=Grid.Columns.Items[i];
    end;
    var
      DataSet:TClientDataSet;
      ASC:boolean;      
      Clm:TColumn;
    begin
      DataSet:=TClientDataSet(Column.Field.DataSet);
      if Assigned(DataSet) and (not DataSet.IsEmpty) then
      begin
        if DataSet.IndexName=Column.Fieldname then
          ASC:=StrPos(PChar(Column.Title.Caption),'▼')<>nil;
        Clm:=FindColumn(TDbGrid(Column.Grid),DataSet.IndexName);
        if Assigned(Clm) then
        begin
          DataSet.DeleteIndex(DataSet.IndexName);
          Clm.Title.Caption:=Copy(Clm.Title.Caption,1,Length(Clm.Title.Caption)-2);
        end;
        if Asc then
        begin
          DataSet.AddIndex(Column.Fieldname,Column.FieldName,
                          [ixCaseInsensitive,ixDescending]);
          Column.Title.Caption:=Column.Title.Caption+'▲';
        end
        else begin
          DataSet.AddIndex(Column.Fieldname,Column.FieldName,[ixCaseInsensitive]);
          Column.Title.Caption:=Column.Title.Caption+'▼';
        end;
        DataSet.IndexName:=Column.Fieldname;
      end;
    end;
      

  6.   

    升序:
    select * from tablename order by fieldname ASC
    降序:
    select * from tablename order by fieldname DESC
      

  7.   

    回复:“那如果我只用table控件,不用query控件 可以进行排序么?”将table的IndexFieldNames属性值设为你要排序的字段即可!