采用标准的三层结构,应用服务器端采用ADOConnection、Adodataset、datasetprovider,客户端采用socketconnection和ClientDataSet。两个ClientDataSet指到同一个表,一个ClientDataSet用来select,一个用来update。现在用update更新某个记录时(数据库中已更新),浏览操作回来时发现数据还是以前的,应该是数据未刷新,用ClientDataSet1.Refresh和ClientDataSet1.RefreshRecord都出错。

解决方案 »

  1.   

    你select的结果怎么来的,做完Update后,再select一次不就可以了吗?写成过程,再调用一次
    procedure GetData;
    begin
    ClientDataSet1.Close;
    ClinetDataSet1.CommandText := 'select * from ...';
    ClientDataSet1.Open;
    end;
      

  2.   

    做到数据同步就可以了,不要再重新查询,效率不好,就是你update的时候顺便编辑search的那个clientdataset
      

  3.   

    update后,直接重新open另一个clientdataset如果可以的话,不用update,用edit(post),那样不用重新open,速度快
      

  4.   


    要麼就用一個數據集,三層緩存下更新! 要麼只是更新一次,另外一個就要刷新(close  再 OPen)
      

  5.   

    直接更新本地缓存
        //同步更新本地
        if ClientDataSetPaper.State <> dsEdit then
          ClientDataSetPaper.Edit;
        ClientDataSetPaper.FieldByName('Answer').AsString:=sAnswer;
        ClientDataSetPaper.Post;