ClientDataSet1重复上传,你们遇到这样的情况吗? ( 积分: 100 )

  • 主题发起人 主题发起人 友美子
  • 开始时间 开始时间

友美子

Unregistered / Unconfirmed
GUEST, unregistred user!
ClientDataSet1重复上传,你们遇到这样的情况吗?<br>我是Delphi7和远程SQL2000,多层数据库设计。<br>我把<br>ClientDataSet1的filename设为p.cds<br>添加一条新数据,保存后<br>上传&nbsp;ClientDataSet1.ApplyUpdates(-1);<br><br>有时发现SQL2000的对应表p里面,有同样的两条数据项(只有我定义的标识【编号】不同)<br>不知道为什么会出现这样的事情?你们是如何解决的?<br><br>、、、、以下是我的大体分析,请指教、、、、<br>我估计是&nbsp;ClientDataSet1上传后,有时出现错误,上传后ClientDataSet1的Delta没有清空,<br>为什么出现错误呢?是表p或sql200在客户端运行时不可以打开,还是表p设计的有问题(除了【编号】是标识,其它字段都运行为空啊,客户端上传也没有任何关于表p错误操作的提示)<br>==================<br>对了,你们用过高版本的delphi吗?速度等怎么样?有没有这种情况?<br>===============================================================<br>以下是Delta的帮助<br>=============================<br>Delta&nbsp;property&nbsp;(TCustomClientDataSet)<br>=============<br>Represents&nbsp;a&nbsp;packet&nbsp;of&nbsp;change&nbsp;log&nbsp;data<br><br>Delphi&nbsp;syntax:<br><br>property&nbsp;Delta:&nbsp;OleVariant;<br><br>C++&nbsp;syntax:<br><br>__property&nbsp;System::OleVariant&nbsp;Delta&nbsp;=&nbsp;{read=GetDelta};<br><br>Description<br><br>Use&nbsp;Delta&nbsp;to&nbsp;pass&nbsp;a&nbsp;packet&nbsp;of&nbsp;change&nbsp;log&nbsp;data&nbsp;from&nbsp;the&nbsp;client&nbsp;dataset&nbsp;to&nbsp;a&nbsp;provider.&nbsp;Delta&nbsp;contains&nbsp;only&nbsp;information&nbsp;about&nbsp;those&nbsp;records&nbsp;inserted,&nbsp;modified,&nbsp;or&nbsp;deleted&nbsp;through&nbsp;the&nbsp;client.<br><br>When&nbsp;the&nbsp;client&nbsp;dataset&nbsp;is&nbsp;linked&nbsp;to&nbsp;a&nbsp;provider,&nbsp;Delta&nbsp;is&nbsp;passed&nbsp;as&nbsp;an&nbsp;argument&nbsp;to&nbsp;the&nbsp;ApplyUpdates&nbsp;and&nbsp;Reconcile&nbsp;methods,&nbsp;which&nbsp;use&nbsp;the&nbsp;information&nbsp;in&nbsp;the&nbsp;change&nbsp;log&nbsp;to&nbsp;update&nbsp;the&nbsp;database.&nbsp;On&nbsp;return&nbsp;from&nbsp;successful&nbsp;application&nbsp;of&nbsp;updates,&nbsp;Delta&nbsp;is&nbsp;cleared.&nbsp;If&nbsp;update&nbsp;errors&nbsp;occur,&nbsp;the&nbsp;value&nbsp;of&nbsp;Delta&nbsp;after&nbsp;applying&nbsp;updates&nbsp;depends&nbsp;on&nbsp;the&nbsp;error&nbsp;tolerance&nbsp;allowed&nbsp;by&nbsp;the&nbsp;client&nbsp;dataset.&nbsp;This&nbsp;value&nbsp;is<br><br>All&nbsp;change&nbsp;log&nbsp;data&nbsp;when&nbsp;the&nbsp;maximum&nbsp;number&nbsp;of&nbsp;tolerated&nbsp;errors&nbsp;is&nbsp;encountered&nbsp;and&nbsp;all&nbsp;changes&nbsp;are&nbsp;rolled&nbsp;back.<br> Only&nbsp;those&nbsp;changes&nbsp;that&nbsp;could&nbsp;not&nbsp;be&nbsp;applied&nbsp;when&nbsp;fewer&nbsp;errors&nbsp;occurred&nbsp;than&nbsp;the&nbsp;maximum&nbsp;specified&nbsp;as&nbsp;a&nbsp;tolerance&nbsp;level.<br><br>In&nbsp;file-based&nbsp;applications,&nbsp;Delta&nbsp;is&nbsp;cleared&nbsp;when&nbsp;the&nbsp;changes&nbsp;are&nbsp;merged&nbsp;into&nbsp;the&nbsp;Data&nbsp;property&nbsp;using&nbsp;the&nbsp;MergeChangeLog&nbsp;method.
 
我认为可能有二:<br>1、c端:csd端的表没设ID,就可能会这样。<br>2、s端:dsp属性设置改变,例如:resoletodataset=true,就可能会这样。
 
1、先用&nbsp;事件探查器&nbsp;跟跟看,是否是由于下了两条SQL语句<br>2、查一下其Delta是否下了两次SQL语句。。。
 
fjharmer前辈:<br>c端:csd端的表没设ID,就可能会这样。???<br>csd端的表如何设ID?我不会设,如果设ID的话,如何和服务器的ID同步,或相同,而且保存后才会产生ID的,客户端要好几个呢。<br><br>我的resoletodataset=false
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
3K
import
I
I
回复
0
查看
3K
import
I
I
回复
0
查看
1K
import
I
后退
顶部