想根据用户点击的dbgrid的tilte名进行排序,请问order by语句该如何写呢?

解决方案 »

  1.   

    order by 点击的字段就可以了,column.name
      

  2.   

    最好用sort
    procedure TFrmTYJLXZ.DBGrid1TitleClick(Column: TColumn);
    begin
      ADOQuery1.Sort:=Column.FieldName;
    end;
      

  3.   

    if adodataset1.Sort=DBGrid1.Columns[column.Index].FieldName+' DESC' then
       adodataset1.Sort :=DBGrid1.Columns[column.Index].FieldName+' ASC'
       else
       adodataset1.Sort :=DBGrid1.Columns[column.Index].FieldName+' DESC'
      

  4.   

    dbgrid通过datasource与query相关联
      

  5.   

    我找不到query控件的sort属性啊
      

  6.   

    procedure TFrmTYJLXZ.DBGrid1TitleClick(Column: TColumn);
    begin
      ADOQuery1.Sort:=Column.FieldName;
    end;
      

  7.   

    sort是TCustomADODataSet的属性,我用的是adoquery
    如果是query可以这样
    procedure TFrmTYJLXZ.DBGrid1TitleClick(Column: TColumn);
    begin
       ....
      Query1.sql.add('select * ... order by '''+Column.FieldName+'''');
    end;
      
      

  8.   

    楼上的老兄,用你的程序可以实现,不过有点小改动:
      Query1.sql.add('select * ... order by  '+Column.FieldName+'');
      但还有一个问题,这对于大多字段都适用,如'编号','出生日期'等等,都可以按顺序排列,但对于'2002年月平均工资'这一字段却出错,提示是这样的:
      project project1.exe raised exception class  EDBengineerror with message 'token not found'.
      token:1998
      line number:2'.Process stopped. ...
      

  9.   

    sorry,字段名是‘1998年月平均工资’。
      

  10.   

    1998年月平均工资’是不是计算字段,或者用avg函数汇总的
    如果用avg可以试一试用字段别名
      

  11.   

    能否说的详细些
    我的OICQ:12137759,验证信息:DELPHI