procedure TForm2.FormCreate(Sender: TObject);
begin
  with DataModule1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select*from shebei order by 设备编号 asc');
    ADOQuery1.Open;
  end;
end;
我用这种方式把数据放在了DBGrid里面,但是排序的时候,中间的排序规则个首尾的排序刚好相反,实在想不通,其他表就没事,谢谢帮助

解决方案 »

  1.   

    有数据吗,列出来看看
    order by 是按ascii排序的
      

  2.   

    我输入6       asc排序6         dasc排序 11
         20             28                 5                      
         21             21                 20                       
         28             20                 21   
          5             5                  28  
         11             11                 6
    就是中间的几个数和首尾的数排序不一样,中间asc,首尾Dasc.......
      

  3.   

    我数据时字符型的,用int可以正常排序。
      

  4.   


    '11' 排在'2'前面是一定的
    tryselect*from shebei order by len(设备编号),设备编号 
      

  5.   

    看看你字段是什么类型的 如果是数字类型应该不会出现这个问题。如果varcahr() 就让你的编号保持同一长度不够位前面补9,比如 20,21,28,05,11