用书签就行了。var
  BM:TBookStrBM:=Query.Book;
...处理...
Query.Book:=BM;

解决方案 »

  1.   

    对,用书签
    var
       SavePlace: TBook;
    begin
       SavePlace := Query.GetBook;
       ///
       Query.GotoBook(SavePlace);
       Query.FreeBook(SavePlace);
    end;
      

  2.   

    var
      SavePlace: TBook;
    begin
      SavePlace := Query.GetBook;
      try
        //你的其它代码
      finally
        Query.GotoBook(SavePlace);
        Query.FreeBook(SavePlace);
      end
    end;
      
      

  3.   

    上边的说的是个好办法,另外:
    若是有规律的移动:比如上一(几)条、下一(几)条,那直接向相反的方向移就是了
    若无规律:可用一个变量记录某个字段,操作完后再用dataset.locate()定位啦
    或与上述的原理一样,用记录号定位dataset.recnum...(记不得了)
      

  4.   

    var
     Book:Tbook;
    Begin
      Book:=Table1.Getbook;//作标记
      Table1.Disablecontrols;//切断和数据的联系
      .......
      Table1.gotobook(book);//重新回到原来位置
      table1.enablecontrols;//联系
      table1.freebook(book);//删除标签
    end;