query1.sql.Add('select dptid,dptname from dept order by dptid');查询的时候先排序就行了,输出后是按原来的排序来进行的。

解决方案 »

  1.   

    procedure Tfrm_dept.PrepareData(Sender: TObject);
    var i :integer;
    begin
     query1.close;
     query1.sql.clear;
     query1.sql.Add('select dptid,dptname from dept order by dptname');//我改了这里
     query1.open; query1.first;
     combobox1.items.clear;
     for i:=0 to 100 do
       dptid[i] :=0;
       i :=0;
     while not query1.eof do
     begin
       combobox1.items.add(query1.fieldbyname('dptname').asstring);
       dptid[i] :=query1.fieldbyname('dptid').asinteger;
       query1.next;
       i :=i+1;
     end;
      

  2.   

    排序可以在你的SQL语句后加入“order by 字段名”,一般系统是默认问升序的,要改为降序则还需在后面加上 “dec”。也可以按多个字段排序,只需将字段名用逗号隔开即可,排在前面的字段有高的优先级。