我用ADOConnection和ADOTable,DBGrid用来显示数据。
程序开始运行时,DBGrid显示数据正常。
程序中我想断开数据库连接,于是将ADOConnection断开数据库。但此时我将ADOTable的active设置为true后,DBGrid中还是能够取得数据。
我换用ADOQuery后,也能取得数据。
不知道为何?是我对ADO了解不够深刻吗?
小弟不才,请大虾们解释一下,谢谢!

解决方案 »

  1.   

    你把table的acitve改成true,再改成false ,要在设计期改,看看是不是你想要的结果
      

  2.   

    设计时,我将ADOTable的Connection属性设置为ADOConnection。
    在运行期间,我将ADOTable设置为true,DBGrid中的数据就显示了。
    但是在运行期间,我将ADOConnection断开数据库,然后设置ADOTable为true后,DBGrid还是能够显示!whbo(王红波) :我不知道你说的是什么意思?谢谢
      

  3.   

    你的ADOTabler 的connectionstring值是否為空,如果他本身有連接斷了adoconnection也能顯示數據
      

  4.   

    应该是你的ADOTable、ADOQuery中的connectionstring设置了连接。
      

  5.   

    你把数据模块释放掉,我看你还能不能显示?
    ADOConnection这个控件本来就不是很正常,我以前做数据库恢复的时候把ADOConnection用程序断开,但是还是提示用表连接数据库,恢复不了,说明它压根就没有完全断开,后来把数据模块释放掉就搞定了
      

  6.   

    可以建立一个clientDataSet,在里面加入你查询到的数据,即使ADOConnection被关了,数据仍旧在客户端的内存中,然后你把DataGrid的DataSource属性设置为这个ClientDataSet啦。老实说,多客户端的话,打开数据库连接后一直连接有可能数据库的线程太多造成数据堵塞的
      

  7.   

    ADOQuery1.DisableControls;  ADOQuery1.EnableControls;
      

  8.   

    你要知道即使你的adoconnecttion 断开了,但是当跟他连接的数据集(如adotable,adoquery)打开时,这时跟他连接的adoconnecttion 这时将自动重新连接。所以上面 whbo(王红波) 的问题这个应该可以解释的
    解决办法:
    只要把 adotable.active := false; 而adoconnecttion 要不要断开没有关系.
    这时dbgrid上面就肯定不会有数据了。
      

  9.   

    你斷開數據不一定要adoconnection斷開連接呀。你這是何苦呢。其實你把你的數擾集open後adoconnection會自動的創建與數據庫的連接的。
      

  10.   

    可以建立一个clientDataSet,在里面加入你查询到的数据,即使ADOConnection被关了,数据仍旧在客户端的内存中,然后你把DataGrid的DataSource属性设置为这个ClientDataSet啦。老实说,多客户端的话,打开数据库连接后一直连接有可能数据库的线程太多造成数据堵塞的
      

  11.   

    可以这样~~
    adotable1.locktype:=ltBatchOptimistic;   //使用绶存更新
    adotable1.open;
    adotable1.connection:=nil;
    adoconnection1.connnected:=False;   //断开数据库连接在完成修改或是浏览的时候用adoconnection1.connected:=true;       //打开数据库连接
    adotable1.connection:=adoconnection1;adotable1.UpdateBatch(arall);       //更新数数据操作
    转<<Delphi.5.X.ADO.MTS.COM+高级程序设计篇>>
      

  12.   

    1.welliam(浪人wwl) ,我的ADOConnection与多个数据集组件相连,如果每个数据集组件都要设置为false的话,那简直是...
    2.zdq801104(我很笨,但是我不傻!) ,请问什么叫释放数据模块?如何操作?
    3.ADOQuery1.DisableControls;
      ADOQuery1.EnableControls;
    这个方法的话与1相似,要改多个谢谢!
      

  13.   

    楼主
       你没明白一个问题,ADOConnection起到多个数据集组件链接到数据库的作用
       当你把ADOTable设置为true设置为TRUE是,ADOConnection会自动打开的。明白了嘛
      

  14.   

    : xjwy(程序春秋) ,有办法不让ADOConnection自动打开吗
      

  15.   

    AdoConnection.connected:=false;
    AdoTable.close;
      

  16.   

    只要把 adotable.active := false; 而adoconnecttion 要不要断开没有关系.
    这时dbgrid上面就肯定不会有数据了。
      

  17.   

    没有什么办法比把ADOTable.close更简单了!!