用 ClientDataSet 如何像query:的requestlive:=true 设置 能够动态修改数据用 ClientDataSet 是否能够实现?????

解决方案 »

  1.   

    不行的,clientDataset对数据的修改都首先保存在其delta数据包内,直到applyUpdates以后才能写回数据库
      

  2.   

    对,clientDataset中用
    edit;
    ....
    post;
    后还需applyUpdates;才能真正的写入数据库
      

  3.   

    其实TClientDataset本来就可以实时动态的修改数据集的,他修改的只是本地内存数据集,所以在你的AfterPost和AfterDelete中可以分别加上TClientDataSet(DataSet).ApplyUpdates(-1),这样就和操作Requeslive=true的TQuery一样了
      

  4.   

    我的clientdataset 连接的服务器端是:datesetprovider:>adoquery 
    我客户端的clientdataset :
      clientDataset中用
      edit;
      ....
      post;
      后还需applyUpdates;才能真正的写入数据库??
    //写成这样 还是不能更新数据库!!!!!!!!!
    而如果服务器端改用adotable就可以了!
    如何把adoquery 的连接 做成 adotable的效果?????
      

  5.   

    procedure TForm1.bClick(Sender: TObject);
    begin
      ClientDataSet1.Close;
      ClientDataSet1.CommandText:='select * from  dlrzh';
      ClientDataSet1.open;
    end;procedure TForm1.BitBtn4Click(Sender: TObject);
    begin   ClientDataSet1.Edit;
        ClientDataSet1.Post;
        b.Click;end;procedure TForm1.ClientDataSet1AfterPost(DataSet: TDataSet);
    begin
      ClientDataSet1.Edit;
      ClientDataSet1.ApplyUpdates(-1) ;
    end;