比如:
ADOCon_sql.Connected:=True; //sqlserver2000的数据库
ADOCon_any.Connected:=True;  //access的数据库
self.ClientDataSet1.Close;
self.ClientDataSet1.CommandText:='select  * from gl_Kmxx';
self.ClientDataSet1.Open;self.ClientDataSet2.Close;
self.ClientDataSet2.CommandText:='select  * from Zw0001_gl_Kmxx';
self.ClientDataSet2.Open;
self.ClientDataSet2.data:=self.ClientDataSet1.Data;
self.ClientDataSet2.ApplyUpdates(-1);
这样做为什么不成功?

解决方案 »

  1.   

    我也有过这样的思路,最终没有实现,后来采取了一条一条执行Sql的方法实现了.下面是我的一些理解:ClientDataSet.ApplyUpdates(-1)需要根据ClientDataSet本身的delta属性来决定有哪些"更新"要提交到表中,而且他还要知道被"更新"的数据来自于哪个表(数据库中实际存在的),这样做可能在这两个环节上有问题,所以不能实现.不知我的理解对不对,请高手们指点.
      

  2.   

    关键是datasetprovider的数据集不能被改变,比如你在客户端传了个select 语句什么的,改变了datasetprovider的数据集.量的不去强制的用CommandText或是SQL给其值,并再次更新,因为它是动一牵多的。
      

  3.   

    据我的理解,ClientDataSet的数据改变在Delta属性中,当ClientDataSet更新数据时,真正传递到服务器的数据是delta。你试试看。