有一查询TQuery (QryCxCk  查询结存和未结存的仓库)
        按结存名称(JCMC)排序如下
(仓库代码,结存名称,仓库名称)
CKDM JCMC   CKMC 
--- ------ ----------------------------------------
004 未结存 3#成品库(科技园)                      
005 未结存 配装库                                  
006 未结存 军区仓库     
002 已结存 1#成品库(装一北线)                    
003 已结存 2#成品库(装一南线)   结果集加入TListBox(SrcList 源数据显示)
002 已结存1#成品库(装一北线)                    
003 已结存2#成品库(装一南线)   
004 未结存3#成品库(科技园)                      
005 未结存配装库                                  
006 未结存军区仓库     未按结存名称(JCMC)排序,相应的事件语句为:
 QryCxCk.close;
 QryCxCk.open;
 SrcList.Items.Clear;
 QryCxCk.First;
 while not QryCxCk.Eof do
   begin
    SrcList.Items.Add(QryCxCk.fieldbyname('ckdm').asstring+'  '+QryCxCk.fieldbyname('jcmc').asstring+QryCxCk.fieldbyname('ckmc').asstring);
    QryCxCk.next;
   end;请高手指点!

解决方案 »

  1.   

    with QryCxCk do
      begin
        Active:=False;
        sql.clear;
        sql.add('select * from tabel order by CKDM');
        Active:=True;
        SrcList.Items.Clear;
        First;
        while not  Eof do
           begin
             SrcList.Items.Add(Fieldbyname('ckdm').asstring+'  '+Fieldbyname('jcmc').asstring+Fieldbyname('ckmc').asstring);
            next;
           end;
      end;
      

  2.   

    看你的结果就是按CKDM排序的~~~~
      

  3.   

    **********抢分行动***********
    碰到问题查不到,花了半天时间作了一个,不敢独享。
    ADO类的数据集有Sort,但是TClientDataSet没有,故作。procedure SortCDS(Column:TColumn);
    function FindColumn(Grid:TDbGrid;Name:string):TColumn;
    var
      i:integer;
    begin
      Result:=nil;
      for i:=0 to Grid.Columns.Count-1 do
        if Grid.Columns.Items[i].FieldName=Name then
          Result:=Grid.Columns.Items[i];
    end;
    var
      DataSet:TClientDataSet;
      ASC:boolean;      
      Clm:TColumn;
    begin
      DataSet:=TClientDataSet(Column.Field.DataSet);
      if Assigned(DataSet) and (not DataSet.IsEmpty) then
      begin
        if DataSet.IndexName=Column.Fieldname then
          ASC:=StrPos(PChar(Column.Title.Caption),'▼')<>nil;
        Clm:=FindColumn(TDbGrid(Column.Grid),DataSet.IndexName);
        if Assigned(Clm) then
        begin
          DataSet.DeleteIndex(DataSet.IndexName);
          Clm.Title.Caption:=Copy(Clm.Title.Caption,1,Length(Clm.Title.Caption)-2);
        end;
        if Asc then
        begin
          DataSet.AddIndex(Column.Fieldname,Column.FieldName,
                          [ixCaseInsensitive,ixDescending]);
          Column.Title.Caption:=Column.Title.Caption+'▲';
        end
        else begin
          DataSet.AddIndex(Column.Fieldname,Column.FieldName,[ixCaseInsensitive]);
          Column.Title.Caption:=Column.Title.Caption+'▼';
        end;
        DataSet.IndexName:=Column.Fieldname;
      end;
    end;