我在服务器端用的是ADO,客户端clientDataset。但是我对从表进行增加,删除时,在当前form是起作用了,事实上也写入了后台服务器。但从form中出来再进去时,发现还是原来的数据(例如,我删除了从表的一条记录,服务器上确实没有了,当时form中也没有这条纪录。但我出了form再进去,发现那条纪录还在。好像clientDataset的缓存没有变)。除非我再运行一次当前项目,才显示正确的数据。
  查了所有的帖子和faq,我在applyupdate后用了refresh,但没有用。我还试了组合,主表refresh,主表表打开关闭;主表refresh,从表打开关闭。要不不起作用,要不删一条纪录所有纪录都看不见了(事实上其他纪录还有,下次运行时才出来)。我也设置了服务器端的ADO的indexname,客户端clientDataset的indexname为表的主键,但还是不起作用。各位大侠,我的时间紧迫,请指点一下,小弟感激不尽!最好是实践经验证明行之有效的方法。我用的是dephi5

解决方案 »

  1.   

    ClientDataSet1.Close;
    ClientDataSet1.Open;
      

  2.   

    我早试过,无论打开关闭主表,还是从表的ClientDataSet,都不行。至于刷新Query(),难道指刷新服务器的AdoDataSet?按李维的书《分布式多层应用系统篇》第七章24页,客户端更新后,服务器的dataset应该会主动取回新的数据,即服务器端的dataset中的数据总是最新的(但应该不会又传到客户端一次)。我的问题应该出在clientDataset的缓存中
      

  3.   

    clientdataset.applyupdates(0);
    不知道是否正确,请指教
      

  4.   

    假如这样不行的话:
        ClientDataSet1.Close;
        ClientDataSet1.Open;
    else
       发消息到服务器进行刷新,记住还得:
       ClientDataSet1.Close;
        ClientDataSet1.Open;
      

  5.   

    clientdataset1.requery;
    数据要重新装载才行
      

  6.   

    用clientdataset1.applyupdates(1)就可以啦!