我想将DBGRID中的数据每单击一次按钮就将该记录向上移动一行,比如原来该记录在DBGRID中位于第4行,我单击一次按钮后,将该记录移动到第3行,原来的第3行数据移动到了第4行,请问该怎么写,谢谢。

解决方案 »

  1.   

    用控件
    DBNavigator
    或代码
     ADOQuery1.Prior;
      

  2.   

    你在dbgrid中的資料按甚麼欄位排序,就把這個欄位(field)的值交換一下,再排序,
    否則, 沒意義.
      

  3.   

    ADOTable1.First;
    ADOTable1.Prior;
    ADOTable1.Next;
    ADOTable1.Last;
      

  4.   

    ADOquery1.First;
    ADOquery1.Prior;
    ADOquery1.Next;
    ADOquery1.Last;
    还有可以用+2前进两条纪录,-2表示后退两条
      

  5.   

    你的意思是将下一条记录上移一行:
    procedure prior_row();
    var
       a1,b1:string;//我假设一个记录有二个字段
       a2,b2:string;
    begin
       with ADOquery1 do
       begin
         edit;
         a1:=fieldbyname('a').asstring;
         b1:=fieldbyname('b').asstring;
         next;
         edit;
         a2:=fieldbyname('a').asstring;
         b2:=fieldbyname('b').asstring;
         pararmbyname('a').asstring;=a1;    
         pararmbyname('b').asstring;=b1;
         prior;
         edit;
         pararmbyname('a').asstring;=a2;    
         pararmbyname('b').asstring;=b2;
       end;
    end;也许这种方法很笨,但可以达到你的目的!~~
      

  6.   

    ADOquery1.First;
    ADOquery1.Prior;
    ADOquery1.Next;
    ADOquery1.Last;
    我测试了大家的这个方法,这个方法只是将光标的位置移动了,但是DBGRID中的数据并没有改变自己的位置啊,我想要的是改变记录的实际的物理位置。
      

  7.   

    你若想记录交换位置,就是数据在数据集中的位置也要遍,我建议你用ListView或StringGrid