我的客户端主要是显示数据库的数据。
应用服务器端:TDatabase,TQuery,TDatasetPrivder。
客户端:TSocketConnection,TClientDataset,TdataSource,TDBGrid。
客户端每隔一定的时间刷新一次数据,我采用ClientDataset.Close,ClientDataset.Open进行刷新。
在客户端运行中,如果后台数据库增加记录,客户端刷新可以显示,如果是减少记录,客户端的数据则不会刷新。如果采用Refresh进行数据刷新,在后台几次改变记录数后,客户端就没有数据显示了,实际上,后台数据库是有的。请问在数据刷新时,应用服务器,客户端需要怎么做比较好,能达到目的?

解决方案 »

  1.   

    每次删除一条或几条数据以后应该
    ClientDataSet1.ApplyUpdates(0);
    ClientDataSet1.RefreshRecord;
      

  2.   

    mynameisking(isking) :我的客户端很简单,没用到事务处理。数据是其它系统修改,我做的这个程序仅仅负责显示数据里的数据。
      

  3.   

    如果socketConnection一直保持连接就可以,但如果断开,再连接后,使用ClientDataSet的Close再Open就没法刷新数据。
      

  4.   

    ClientDataSet.close;
    ClientDataSet.open;
    我认为肯定行。
    这个相当于提交一次SQL语句。
      

  5.   

    mynameisking(isking):我已经测试过了,只要你每次取数据后断开socketconnection的连接,打开数据之前再打开连接,你肯定会发现数据刷新失效。我用的是delphi6环境。
      

  6.   

    关注
    借贵宝地用一下:ClientDataSet.ApplyUpdates();括号里面的参数什么意思啊?用0,-1是不是都可以啊 请高手教下^_^
      

  7.   

    用Close、Open的方法來實現刷新的代價太大建議用RefreshRecord,應該是可以的
      

  8.   

    duanhai(段海):
    用RefreshRecord更不行,我做过测试.要SocketConnetion一直保持连接才行,只要中间断开,非要重新启动程序才能刷新数据。
      

  9.   

    问题解决,大家辛苦了,采用的是曲线救国。
    上面各位提供的办法都试过,在不保持SocketConnetion一直连接的情况下都不行。