我再一个表中 查询了一些符合条件的记录然后显示在DBGrid中,然后当我点击DBGRid的Title时要实现排序,不知怎样做?具体排序我会做,但我不懂的是,当我在一个表中检索数据时用的是这个表的名字,而当我排序时表的名字应该怎样安排,是用原来的表的名字那,还是怎样?当用原来表的名字时肯定不行?谢谢了,忘赐教!!!!!

解决方案 »

  1.   

    我再一个表中 查询了一些符合条件的记录然后显示在DBGrid中,然后当我点击DBGRid的Title时要实现排序,不知怎样做?具体排序我会做,但我不懂的是,当我在一个表中检索数据时用的是这个表的名字,而当我排序时表的名字应该怎样安排,是用原来的表的名字那,还是怎样?当用原来表的名字时肯定不行?谢谢了,忘赐教!!!!!再一个是不是应该用临时表,请问对临时表的创建、查询等操作用sql语言应该怎样实现?请用代码举例子。我用的数据库是mysql。
      

  2.   

    再一个是不是应该用临时表,请问对临时表的创建、查询等操作用sql语言应该怎样实现?请用代码举例子。我用的数据库是mysql
      

  3.   

    看看这样行不行?
    OnTitleClick(Column: TColumn);
    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    var str:string;
    begin
      str:=(column.FieldName );
      cishu:=cishu+1;
      with query1 do
        begin
          close;
          sql.Clear;
          sql.add('select * from T_FieldDisplay');
          sql.add('order by '+str);
          if cishu mod 2 =0 then
          sql.add(' asc')
          else
          sql.add(' desc');
          open;
          
        end;
    end;其中 CiShu 记录点击的次数,点击一次增序排列,点击2次降序排列。
    一个变量不合理,应根据字端建立数组分别记录。
      

  4.   

    不行呀,当我从表中按条件查询出记录时,如果按照你的做法,那么我所选择的条件就变了,,。我在把我得问题说一下,我在一个全局单元(Global、pas)中有一个函数用于在表table1中查询记录,如果结果有的话即 havarecord(我定义的一个boolean用于判断是否有满足条件的记录)=true,然后,我在主单元中调用这个函数,根据haverecord的值判断结果有无,若有的话则在一个新的窗体的dbgrid中显示出来,然后再在这个dbgrid中排序,按照你的做法结果就变了。请再赐教!
      

  5.   

    procedure TMaterialFrm.dbgDetailTitleClick(Column: TColumn);
    var
    i:integer;
    begin
      if not QryDetail.Active then exit;
    if QryDetail.FieldByName(Column.FieldName).FieldKind =fkData then
    begin
    for i:=0 to dbgDetail.Columns.Count-1 do
    begin
    if dbgDetail.Columns[i]<>Column then
    begin
    if (copy(dbgDetail.Columns[i].Title.Caption,1,2)='▲') or (copy(dbgDetail.Columns[i].Title.Caption,1,2)='▼') then
    dbgDetail.Columns[i].Title.Caption:=copy(dbgDetail.Columns[i].Title.Caption,3,length(dbgDetail.Columns[i].Title.Caption));
    end else
    begin
    if copy(Column.Title.Caption,1,2)='▼' then
    begin
    QryDetail.Sort:=Column.FieldName+' DESC';
    Column.Title.Caption:='▲'+copy(Column.Title.Caption,3,length(dbgDetail.Columns[i].Title.Caption));
    end else
    begin
    QryDetail.Sort:=Column.FieldName+' ASC';
    if copy(Column.Title.Caption,1,2)='▲' then
    Column.Title.Caption:='▼'+copy(Column.Title.Caption,3,length(dbgDetail.Columns[i].Title.Caption))
    else Column.Title.Caption:='▲'+Column.Title.Caption;
    end;
    end;
    end;
    end;
    end;
      

  6.   

    试试:DataSet.IndexFieldName:='Field1';—————————————————————————————————
      ┏━★━━◆━━★━━┓ 
      ♂◢◣|任庭前花开花落 ┃ 
      ┃◥◤|我自无语笑苍天 ┃  
      ┗━☆━━◇━━━☆━┛  
      

  7.   

    首先,先谢谢大家了! 请问:jixinfa(DELHPI程序员) ( ) 
        你程序中的Sort是那里来得,怎么没有sql语句呀;
    请问:TOMWLD(笑天
        能不能说得明白点呀。--------不好意思,俺是菜鸟。