如题

解决方案 »

  1.   

    还有就是ADD语句前面有没有
    Clear;
      

  2.   

    '....order by '+DBGrid2.SelectedField.FieldName;另外还看一下你的字段充不充许进行排序
      

  3.   

    看一看是不是你粗心在ORDER BY后少留了个空格.
      

  4.   

    你在execute前
    showmessage(sql);看有没有错误就行了
    可以肯定是sql的语法错误
      

  5.   

    sql.add('select  * from tablename order by'+'空格'     +columnColumn.FieldName);
      

  6.   

    给你段代码参考,不用改变SQL语句进行排序,不过对计算字段就无能为力了:procedure TFrmchpcrkcx.dbgMasterTitleClick(Column: TColumn);
    var
    i:integer;
    begin
    if ADOQ_sel.FieldByName(Column.FieldName).FieldKind =fkData then
    begin
    for i:=0 to dbgMaster.Columns.Count-1 do
    begin
    if dbgMaster.Columns[i]<>Column then
    begin
    if (copy(dbgMaster.Columns[i].Title.Caption,1,2)='▲') or (copy(dbgMaster.Columns[i].Title.Caption,1,2)='▼') then
    dbgMaster.Columns[i].Title.Caption:=copy(dbgMaster.Columns[i].Title.Caption,3,length(dbgMaster.Columns[i].Title.Caption));
    end else
    begin
    if copy(Column.Title.Caption,1,2)='▲' then
    begin
    ADOQ_sel.Sort:=Column.FieldName+' DESC';
    Column.Title.Caption:='▼'+copy(Column.Title.Caption,3,length(dbgMaster.Columns[i].Title.Caption));
    end else
    begin
    ADOQ_sel.Sort:=Column.FieldName+' ASC';
    if copy(Column.Title.Caption,1,2)='▼' then
    Column.Title.Caption:='▲'+copy(Column.Title.Caption,3,length(dbgMaster.Columns[i].Title.Caption))
    else Column.Title.Caption:='▲'+Column.Title.Caption;
    end;
    end;
    end;
    end;
    end;
      

  7.   

    order by 后要有空格的阿
      

  8.   

    我加了空格了。前面是ADOQuery.没问题吧。
    ADOQuery.SQL.Add('SELECT * FROM 表一 ORDER BY '+Column.FieldName);
      

  9.   

    ADOQuery.close;
    ADOQuery.sql.clear;
    ADOQuery.SQL.Add('SELECT * FROM 表一 ORDER BY '+Column.FieldName);
    ADOQuery.open出错误说:ORDER BY 语法错误
      

  10.   

    你用showmessage看一下column.fieldname的值是什么?
      

  11.   

    SQL.Add('SELECT * FROM 表一 ORDER BY '+Column.FieldName);
    中的Column.FieldName是否为空,或表中不存在该字段;