当前位置:主页>销售管理软件> 列表

怎样将一个ClientDataSet中数据复制到另一个Cl 找免费的财务软件下载

销售管理软件版1楼: 怎样将一个ClientDataSet中数据复制到另一个ClientDataSet中?
有ClientDataSet1, ClientDataSet2, 相同的结构, 使用简单的方法把ClientDataSet1中的数据附加到 ClientDataSet2中.
我使用如下方法:
if (self.ClientDataSet1.State in [dsEdit, dsInsert]) then
self.ClientDataSet1.Post;
if (self.ClientDataSet2.State in [dsEdit, dsInsert]) then
self.ClientDataSet2.Post;
self.ClientDataSet2.AppendData(self.ClientDataSet1.Data, false);

但在添加时, 总会没来由地在ClientDataSet2中多添加一些数据.

2楼: ClientDataSet2.Data := ClientDataSet1.Data; 如客户管理软件

3楼: 好像有个colon功能,直接克隆

4楼: jennykiller是对的

5楼: 如果ClientDataSet2.Data := ClientDataSet1.Data则会直接把ClientDataSet2的数据及结构覆盖,如果是数据付加不能这样的,好象有一个APPEND行或包的函数可以现实你的要求的.

6楼: ClientDataSet2.assign(ClientDataSet1)

销售管理软件版7楼: 直接克隆了

8楼: ClientDataSet有一方法叫: CloneCursor, 我试了,也不行,


还有一个属性, CloneSource, 不知怎么用.

szkok 没错, 我要的是附加数据.
jennykiller,madic 都达不到要求.
再求助!

9楼: 一次只能复制一条。
clientdataset1.first;
clientdataset1.delete;
clientdataset2.data:=clientdataset1.delta;
ClientDataSet1.CancelUpdates ;

10楼: piggoal,的答案我没试过,
从代码看,应该是clientdataset2每次操作后只得到clientdataset1被删除的最后一条记录.
实际只附加了一条记录.不知对否?

11楼: 你的要求比较特殊,好像没有公用性,估计cliendataset不会实现,还是自己写代码吧

12楼: 要求并不特殊, clientdataset2存放数据, clientdataset1存放临时数据,
需要往clientdataset2中增加数据, 但如果新增的数据(很多)有错,则所有新增的数据都不增加到clientdataset2中,
因而我使用了clientdataset1来临时存储数据,
如果数据无错, 再批量提交到 clientdataset2中

通过clientdataset1遍历一条条添加也可以, 但因为我的数据比较多(一千多条), 很费时,

ClientDataSet有一个AppendData方法, 从字面意思应该是添加数据,
但我不知怎么用.

有知道的回应 如免费的财务软件下载

13楼: 真没解了啊?


请大侠再帮忙看看
!

销售管理软件版14楼: ClientDataSet1.Data := ClientDataSet2.Data;

15楼: self.ClientDataSet2.AppendData(self.ClientDataSet1.Data, false);
之前增加一行
self.ClientDataSet1.MergeChangeLog;
这样就应该没错了

16楼: 如果不增加这一样,那么在ClientDataSet1中原本已经删除的记录仍就会被复制到ClientDataSet2中。

17楼: 同意znxia

18楼: ClientDataSet1.XMLData := ClientDataSet2.XMLData;
这中问题没什么好讨论的
给分把老兄

19楼: znxia的正确!
接收,谢谢各位