先把新生成的SQL放到数据库查询窗口中直接运行,看看结果如何,在调。
记住,要讲问题范围逐步缩小

解决方案 »

  1.   

    var
      Sql,Field:String;
    begin
      Field:=Column.Field.FieldName; //取得排序的字段名
      Query1.Close;
      Sql:=Query1.SQL.Text;
      if Pos('Order by',Sql)>0 then
        Delete(Sql,Pos('Order',Sql),Length(Sql)-Pos('Order',Sql));
      //删除原Order by子句,注意:原来的Order by 子句大小写和空格一定要写成Order by,其它
      //的格式(如:ORDER by )都不行的!!
      Sql:=Sql+'Order by '+Field;//新排序子句
      Query1.SQL.Text:=Sql;
      Query1.Open;
    end;
      

  2.   

    我试过了ORDER by可以的
    procedure Tcompanybrows.DBGrid1TitleClick(Column: TColumn);
    var
       gs:string;
    begin
       gs:=column.fieldname;
       with Query1 do
         begin
              close;
              sql.Clear;
              sql.Add('select * from table ORDER by '+gs);
              open;
         end;
    end;
      

  3.   

    DBGrid1Boolean:  boolean;  //全局变量
     
    ADOTable1:  TADOTable;
      
    procedure  TForm1MainMenu.DBGrid1TitleClick(Column:  TColumn);
    begin
        with  ADOTable1  do    
        begin  
            if  DBGrid1Boolean  then
                TADOTable(ADOTable1).Sort  :=  Column.FieldName  +  '  DESC'
            else
                TADOTable(ADOTable1).Sort  :=  Column.FieldName;
            DBGrid1Boolean  :=  not(DBGrid1Boolean);
        end;
    end;
      

  4.   

    关注
    不知道我遇到的和你的问题是不是一样,是否出现的是列名无效异常,SQL语句都没错(当然ORDER BY 大小写是没有什么关系的) 感觉有点怪