ClientDateSet复制另一个ClientDateSet数据

Yothan 2010-01-14 01:06:36
如题,由于数据量大所以在原ClientDateSet中加入了Fiter,要求现ClientDateSet加载原ClientDateSet过滤掉的数据
试过ClientDateSet1.Data=ClientDateSet2.Data,ClientDateSet.CloneCursor,都不可以将原数据库中的数据过滤掉。

各位达人,帮忙指点迷津吧,急!
...全文
325 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
laobeli 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yueyun889 的回复:]
使用cloneCursor的方法是可以的。

cds2.CloneCursor(cds1,False);

第三参数使用默认的False就可以过滤数据了。

谢谢Avan_Lau的提醒,也谢谢其他各位。
[/Quote]

我测试过了,这样的方法显示数据没有问题,查看RecordCount记录数也没有问题,但是不知道你有没有试着SaveToFile过,我试过保存至XML文件打开后仍然和原来的数据一样,另外这种Cursor的Clone似乎也会造成对一个数据修改连带着改变其它Clone的数据。
Yothan 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 linghengmao 的回复:]
引用 3 楼 yueyun889 的回复:
数据量过大,不采用循环方式。
可有其他方法?

clientdataset的數據已在內存中了,如果不是很大,采用循環方式應該不會慢的。
[/Quote]

ERP软件会尽量提高速度的,循环。。下下选啊~
Yothan 2010-01-14
  • 打赏
  • 举报
回复
使用cloneCursor的方法是可以的。

cds2.CloneCursor(cds1,False);

第三参数使用默认的False就可以过滤数据了。

谢谢Avan_Lau的提醒,也谢谢其他各位。
linghengmao 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yueyun889 的回复:]
数据量过大,不采用循环方式。
可有其他方法?
[/Quote]
clientdataset的數據已在內存中了,如果不是很大,采用循環方式應該不會慢的。
金卯刀 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yueyun889 的回复:]
引用 2 楼 dd_zhouqian 的回复:
没用过,刚查了下
主要是用这两种方式。

clientdataset1.Data:=clientdataset2.data; 
  或者使用Clone 
  clientdataset1.CloneCursor(clientdataset2,False,True); 

我试过,这两种方法都是将原数据集的数据全部复制过来,而不能取出 原数据集中的Fiter过滤后的数据
[/Quote]

你留意一下CloneCursor後面的兩個參數,clientdataset1.CloneCursor(clientdataset2,False),後一個參數默認為false,此時clientdataset1中的filter與clientdataset2是一樣的...也就是做了同樣的過濾的
CCC的 2010-01-14
  • 打赏
  • 举报
回复
cdsDest.Assign(cdsSource)
Yothan 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dd_zhouqian 的回复:]
没用过,刚查了下
主要是用这两种方式。

clientdataset1.Data:=clientdataset2.data; 
  或者使用Clone 
  clientdataset1.CloneCursor(clientdataset2,False,True); 
[/Quote]
我试过,这两种方法都是将原数据集的数据全部复制过来,而不能取出 原数据集中的Fiter过滤后的数据
Yothan 2010-01-14
  • 打赏
  • 举报
回复
数据量过大,不采用循环方式。
可有其他方法?
dd_zhouqian 2010-01-14
  • 打赏
  • 举报
回复
没用过,刚查了下
主要是用这两种方式。

clientdataset1.Data:=clientdataset2.data;
或者使用Clone
clientdataset1.CloneCursor(clientdataset2,False,True);
chhrsas 2010-01-14
  • 打赏
  • 举报
回复
用循环一条一条的赋值过去就可以了。

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧