试试在循环之前不连datasource?

解决方案 »

  1.   


    DBGrid_Single.DataSource.DataSet.DisableControls;while ..... do
    ....DBGrid_Single.DataSource.DataSet.EnableControls;
      

  2.   

    呵呵,很简单,在循环之前加上:adoquery.disablecontrols;
    在循环之后加上:adoquery.enablecontrols;
      

  3.   


    DBGrid_Single.DataSource.DataSet.DisableControls;while ..... do
    ....DBGrid_Single.DataSource.DataSet.EnableControls;
      

  4.   


    DBGrid_Single.DataSource.DataSet.DisableControls;while ..... do
    ....DBGrid_Single.DataSource.DataSet.EnableControls;
      

  5.   

    创建一个临时的Table连DBGrid,把数据添到临时的Table里,结束时再连回去,同时释放临时的Table;
    //期待更好的办法
      

  6.   

    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      OldBook: TBook;
    begin
      ADOQuery1.DisableControls;
      OldBook := ADOQuery1.GetBook;
      ADOQuery1.First;
      while not ADOQuery1.Eof do
      begin
        ............
      end;
      ADOQuery1.GotoBook(OldBook);
      ADOQuery1.FreeBook(OldBook);
      ADOQuery1.EnableControls;
    end;
      

  7.   

    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      OldBook: TBook;
    begin
      ADOQuery1.DisableControls;
      OldBook := ADOQuery1.GetBook;
      ADOQuery1.First;
      while not ADOQuery1.Eof do
      begin
        ............
      end;
      ADOQuery1.GotoBook(OldBook);
      ADOQuery1.FreeBook(OldBook);
      ADOQuery1.EnableControls;
    end;
      

  8.   

    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      OldBook: TBook;
    begin
      ADOQuery1.DisableControls;
      OldBook := ADOQuery1.GetBook;
      ADOQuery1.First;
      while not ADOQuery1.Eof do
      begin
        ............
      end;
      ADOQuery1.GotoBook(OldBook);
      ADOQuery1.FreeBook(OldBook);
      ADOQuery1.EnableControls;
    end;
      

  9.   


    唉,我本来是试试我的信誉分有没有涨的:-)斑主还不审FAQ?!
      

  10.   

    谢谢各位,这个问题解决了。procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      OldBook: TBook;
    begin
      oldbook:=nil; //必须加上这一项才有用。 
      ADOQuery1.DisableControls;
      OldBook := ADOQuery1.GetBook;
      ADOQuery1.First;
      while not ADOQuery1.Eof do
      begin
        ............
      end;
      ADOQuery1.GotoBook(OldBook);
      ADOQuery1.FreeBook(OldBook);
      ADOQuery1.EnableControls;
    end;我还有一个小小问题, 请教 , 就是在dbgrid的某一项时, 当数据输入正确
    后才允许离开, 如果没正确则不允许离开。 怎么做。 我在oncolexit事件控件 , 但不管怎样还是照样退出.
      

  11.   

    谢谢各位,这个问题解决了。procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      OldBook: TBook;
    begin
      oldbook:=nil; //必须加上这一项才有用。 
      ADOQuery1.DisableControls;
      OldBook := ADOQuery1.GetBook;
      ADOQuery1.First;
      while not ADOQuery1.Eof do
      begin
        ............
      end;
      ADOQuery1.GotoBook(OldBook);
      ADOQuery1.FreeBook(OldBook);
      ADOQuery1.EnableControls;
    end;我还有一个小小问题, 请教 , 就是在dbgrid的某一项时, 当数据输入正确
    后才允许离开, 如果没正确则不允许离开。 怎么做。 我在oncolexit事件控件 , 但不管怎样还是照样退出.
      

  12.   

    建议不要直接在TDBGrid中修改数据,代替用TEdit或TDBEdit,这样你的要求比较容易达到,而且较安全。
      

  13.   

    oncolexit只是在光标移至同一条记录不同字段时触发,如你仍想这样做,可能你需要处理三个事件(运行同一段代码):
    DBGrid1.OnColExit;
    DBGrid1.OnExit;
    DBGrid1.DataSource.OnDataChange;