是否可以:
打开程序后,这时数据库的连接断开的,开始对数据操作时才进行连接;例如打开一个FORM,在GRID中新增修改数据时,就连接上,修改完或添加完就断开。因为连接CLOSE后,数据就不显示了,但我还想数据显示在界面上,不知这样是否可行?

解决方案 »

  1.   

    那你就不要用数据感知控件.用普通的控件,将数据写入到控件中显示.
    或者用ClientData,将数据写入到ClientDataSet也可以用数据感知控件.
    但是保持连接好像没什么不好吧.
      

  2.   

    因为程序有比较多的终端同时操作,现在有出现死锁现象,就是在sp_lock中有很多相同的ID
      

  3.   

    可行,可以将DBGrid,改为StringList,循环搜索数据库里面的数据,然后埃项添加,数据修改后更新stringList即可, 这样数据显示就与数据库分离了
      

  4.   

    还可以用TDataSet类对象从ADOQuery做一份拷贝
    uses DBClient,provider;
    var
      MyDataSet:TClientDataSet;
      FDataProvider: TDataSetProvider;
      ...
      FDataProvider := TDataSetProvider.Create(nil);
      FDataProvider.DataSet := AdoQuery1;
      ADOQuery1.close;
      ADOQuery1.Sql.text := '.............';
      ADOQuery1.open
      MyDataSet := TClientDataSet.create;
      MyDataSet := TDataSetProvider.Data;
      DataSource1.DataSet := MyDataSet;
      DBGrid1.DataSource := DataSource1;
      

  5.   

    Query+Provider+ClientDataSet,ClientDataSet打开后,连接关闭。
    ClientDataSet提交的时候,再把连接打开。