我用BDGIRD显示查询出来的数据select * from A where fb_01='xyz',然后我想把DBGIRD中显示的数据反个顺序显示,请问该怎么实现啊!任何字段的数据都是乱的

解决方案 »

  1.   

    select * from A where fb_01='xyz' order by fb_01 DESC
      

  2.   

    如果你是用ADO的,那么下面代码绝了,每个字段都可以排,顺排逆排都可以:
    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    var
      DataSet: TDataSet;
    begin
      {点击标题栏,排序}  DataSet := Column.Field.DataSet;
      if not DataSet.Active then exit;  if DataSet is TCustomADODataSet then
      with TCustomADODataSet(DataSet) do
      begin
        if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
           begin
             Sort := Column.Field.FieldName + ' DESC';
           end
        else
           begin
             Sort := Column.Field.FieldName + ' ASC';
           end;
      end;
    end;
      

  3.   

    procedure Tfrm_main.DBGrid1TitleClick(Column: TColumn);
    var
    i,row,col:integer;
    begin
      //TDrawGrid(dbgrid1).row:=row;
      //TDrawGrid(dbgrid1).col:=col;
        col:=DBGrid1.columns[1].Index;  if pos('▼',DBGrid1.Columns[col].title.caption)<>0 then
        DBGrid1.Columns[col].title.caption:=copy(DBGrid1.Columns[col].title.caption,1,length(DBGrid1.Columns[col].title.caption)-2)
      else
      if pos('▲',DBGrid1.Columns[col].title.caption)<>0 then
        DBGrid1.Columns[col].title.caption:=copy(DBGrid1.Columns[col].title.caption,1,length(DBGrid1.Columns[col].title.caption)-2)+'▼'
      else
        DBGrid1.Columns[col].title.caption:=DBGrid1.Columns[col].title.caption +'▲';
      for i:=0 to DBGrid1.Columns.Count-1 do
      begin
        if pos('▼',column.Title.Caption)<>0 then
          Adoquery1.Sort :=column.fieldname + ' DESC'
        else
        if pos('▲',column.Title.Caption)<>0 then
          Adoquery1.Sort :=column.fieldname + ' ASC'
        else
        //这里应怎么写,就是不升序不降序,还原来查询出来的记录顺序.
        end;
    end;
      

  4.   

    Adoquery1.Sort :=column.fieldname + ' ASC'
    就行
      

  5.   

    ali30() ( ) 的代码我运行过,有问题!
      

  6.   

    procedure TF_HandleShift.SuDBGrid_1TitleClick(Column: TColumn);
    begin
      if ADODS_StandardAtt.RecordCount>1 then
      begin
        if ADODS_StandardAtt.IndexFieldNames=Column.Field.FieldName then
          ADODS_StandardAtt.IndexFieldNames:=Column.Field.FieldName+' DESC'
        else
          ADODS_StandardAtt.IndexFieldNames:=Column.Field.FieldName;
      end;  
    end;
    你看看我这段代码,也是双击DBGrid得Title,DBGrid的数据集是ADODS_StandardAtt
    很好用
      

  7.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
    i:integer;
    begin
    cs1.Active:=true;
    //将dbgrid标识记录为升序
    for i:=0 to dbgrid1.Columns.Count-1 do
        dbgrid1.Columns[i].Title.Caption:=dbgrid1.Columns[i].Title.Caption+'▲';
    end;procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    var
    bt,sortstr:string;
    i:integer;
    begin
    //记录column标题
    bt:=column.Title.Caption;
    //查找排序标识
    if (pos('▲',bt)=0) then
       column.Title.Caption:=stringreplace(column.Title.Caption,'▼','▲',[rfreplaceall])
    else
       column.Title.Caption:=stringreplace(column.Title.Caption,'▲','▼',[rfreplaceall]);
    //记录排序条件
    for i:=0 to dbgrid1.Columns.Count-1 do
        begin
        if sortstr='' then
           begin
             if pos('▲',dbgrid1.Columns[i].title.Caption)=0 then
                sortstr:=dbgrid1.Columns[i].FieldName+' DESC'
             else
                sortstr:=dbgrid1.Columns[i].FieldName+' ASC';
           end
        else
           begin
             if pos('▲',dbgrid1.Columns[i].title.Caption)=0 then
                sortstr:=sortstr+','+dbgrid1.Columns[i].FieldName+' DESC'
             else
                sortstr:=sortstr+','+dbgrid1.Columns[i].FieldName+' ASC';
           end
        end;
    //排序
    cs1.sort:=sortstr;
    end;
    //在delphi 7下调试能过