况是这样的,我现在做超市前台的POS,我是先把客户端前台POS的单据先保存在本地数据库(因为数据发生非常频繁,不可能用实时提交的方式),然后再从本地数据库读取数据提交给服务端,我现在是用ADOQuery先读取本地数据,然后再用ClientDataSet循环Append,把ADOquery数据导到ClientDataSet,这样就生成了ClientDataSet.Detla,然后再进行提交,但是这样出现了一个问题了,就是已经提交过的数据再提交就会造成重复,如果在数据库设置关键字,如果存在重复的话就所以的数据就不能提交了,如果用循环判断是否已经存在那更行不通了,数据量太庞大了求高手指点一下,怎么解决这一问题,或有更好的办法?
1:加多一个TDataSetProvider控件,将其指定AdoQuery,然后在AdoQuery.Open之后
使用TClientDataSet.Data = TDataSetProvider.Data方法即可。这样不会产生日志依你的方法:
2:你一条一条Append之后(这样效率低,而且麻烦),调用TClientDataSet.MergeChangeLog方
法合并掉日志
你说的第一种方法,ClientDataSet.Delta 里面没有数据,所以也就没办法添加的,行不通
按照 DreamStrat(梦启动的摇篮…) 的做法,query查询后把执行一个SQL,把标志改掉,下次就不出出现重复的了!