delphi 中Adoquery ,在打开时能否让记录指针不移动?
由于数据集Adoquery 时,它的针指称动会废时,能否在打开完成之前不让记录指针不移动。打开完毕之后再回复移动?

解决方案 »

  1.   

    这样用:
    self.ADOQuery1.DisableControls;
    .........
    self.ADOQuery1.EnableControls;
      

  2.   

    大师,DisableControls 只能在刷新记录的时候切断数据组件,但不能使用ADOQUERY 不移动
      

  3.   

    procedure refreshDataSet(daSet: TadoQuery);
    var
      tempBook: TBook;
    begin
      IF DaSet.RecordCount<=1 Then
            Exit;
      daSet.DisableControls;
      tempBook := daSet.GetBook;              //保存书签  daSet.Requery([]);                              //刷新数据,
      try
        daSet.GotoBook(tempBook);             //重新获取书签
      except
        daSet.Last;
      end;
      daSet.EnableControls;
    end;
    上边是一种方法。
      

  4.   

    procedure refreshDataSet(daSet: TadoQuery);
    var
      tempBook: TBook;
    begin
      IF DaSet.RecordCount<=1 Then
            Exit;
      daSet.DisableControls;
      tempBook := daSet.GetBook;              //保存书签  daSet.Requery([]);                              //刷新数据,
      try
        daSet.GotoBook(tempBook);             //重新获取书签
      except
        daSet.Last;
      end;
      daSet.EnableControls;
    end;
    上边是一种方法。
      

  5.   

    假设表名是adoquery1,
    DisableControls是切断数据表adoquery1与感知组件如:dbgrid,dbedit等的联系。
    如果你在代码中有移动和编辑、添加、删除记录的情况下,adoquery1的记录指针也会动的。
    如果你关闭后又重新打开adoquery1,需要重新定位指针。
    adoquery1.requery;//  可用楼上的方法。
    如果是close后再open的情况下,book也会失效的。重新定位,用locate,seek也可实现。