数据库连接人数有限,而对效率要求又非常高,想到把数据读出之后在DBGrid里显示出来然后直接注销掉连接,不能采取读到StringGRid或者ClientDataSet等方法,不知道还有什么好办法。

解决方案 »

  1.   

    DBGrid必须要和数据源关联的,如果数据源关闭了,DBGrid的数据也就不存在了
    既然有这样的需求,为何还一定要DBGrid来显示数据,为何还不能用能静态显示数据的控件?
      

  2.   

    dbgrid是数据感知控件   如果感知不到数据,dbgrid中得数据自然得消失
    你可以再加些别的控件, 这里对我们读到的数据(放到dbgrid中的数据)进行处理
      

  3.   

    读到StringGRid可以,但什么都要自己控制...
      

  4.   

    为什么ClientDataSet不行呢, 你可以在第一次加载的时候把远程数据库的
    使用频率最高的数据下载到本机, 然后在本地操作效率也是很高的.
    比喻说 ClientDataSet2.Data:=ClientDataSet1.Data 
    ClientDataSet1就是你下载到本机的数据离线数据,但是这样做有一个
    问题就是数据不是最新, 所以你要每隔一段时间更新本地数据.
      

  5.   

    我使用的是ADO方法可以adoquery1.EnableControls
    adoquery1.DisableControls
      

  6.   

    使用ADO所谓的Briefcase模式的应用程序,
    设置:
    ADODataSet/ADOTable/ADOQuery
    CursorLocation=clUseClient;
    CursorType = clStatic;
    LockType = ltOptimistic;
    然后,正常的载入数据,
    然后在保持激活的状态下TADODataSet->SaveToFile();
    保存到一个文件,
    然后,就可以断开ADODataSet的数据源了,
    然后用ADODataSet->LoadFromFile();载入刚保存的文件,关于Briefcase模式的数据库应用,请参照李维的《Delphi 5.x ADOMTSCOM+高级程序设计篇》不知道这个是不是你要的。