用的是三层结构,连接ACCESS2000数据库
服务器端: ADOConnection1,DataSetProvider1,ADOQuery1
客户端:TConnSocketConnection,ClientDataSet1,DataSource1
在客户端用Select * from 表 where ....查询到数据修改,已经把修改的数据提交了,在客户端内容显示已更改,可是当重新进入发现数据又变回来了,原来更改的变回没更改之前的,删除掉的又出来,新添加的没有。
这是怎么回事啊?
我再用一句 DataSource1.Refresh,却出现这个错误了
Must apply updates before refreshing data.

解决方案 »

  1.   

    在Post之后,还要加上如ClientDataSet1.ApplyUpdate(-1).
      

  2.   

    ClientDataSet1.ApplyUpdate(clientdataset1.ChangeCount)
      

  3.   

    我的情况我遇见过,同意liufuyahong的解决方案,我就是这样做的。最好的办法是客户端传数据到服务端,再由服务端进行存储操作。
      

  4.   

    ClientDataSet1.ApplyUpdate(clientdataset1.ChangeCount)
      

  5.   

    ClientDataSet1.ApplyUpdate(clientdataset1.ChangeCount)
      

  6.   

    ClientDataSet1只是临时表,你的数据没有提交,可以通过adoquery再post就ok了
    ClientDataSet1不能用refresh
      

  7.   

    在多层中,客户端采用缓冲更新机制,批量更新是通过tclientdataset的applyupdates方法实现的
      

  8.   

    三层保存不能用POST就可以的,用UPDATE吧,艾,不知道你用ACCESS数据库为什么还要用三层呢?
      

  9.   

    ACCESS数据库只是调试用的,程序做好了就是连SQL Server的