procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
if (adotable1.Sort=Column.FieldName+' ASC')  then   
    adotable1.Sort:=Column.FieldName+' DESC'         
  else
    adotable1.Sort:=Column.FieldName+' ASC';
end;编译通过了,运行后点击列名,就弹出对话框说:项目在所需的名称或序数中未被发现,这是为什么?

解决方案 »

  1.   

    如果是lookup 字段和计算字段事不能排序的
      

  2.   

    是不是 ASC和DESC前没有加空格
      

  3.   

    不是lookup和计算字段;
    加空格了啊。
    我在delphi的demo里粘了一段程序,还是同样的结果:项目在所需的名称或序数中未被发现,是不是我忽略了什么细节?
    var
      DataSet: TDataSet;
    begin
      DataSet := Column.Field.DataSet;
        if DataSet is TCustomADODataSet then
        with TCustomADODataSet(DataSet) do
        begin
          if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
            Sort := Column.Field.FieldName + ' DESC' else
            Sort := Column.Field.FieldName + ' ASC';
     end;
    end;
      

  4.   

    我也出现了同样的问题。我改变了title.caption的值。
    我试过:
       AdoQuery1.Sort:=AdoQuery1.Fields.Fields[Column.index].FieldName;
    也试过:
       AdoQuery1.Sort:=Column.fieldname;
    一样的错误。
    主要出在哪些复杂查询的字段上。如:to_char(a.createdate,'yyyy-mm-dd')等字段上。