線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3117
推到 Plurk!
推到 Facebook!

如何清除ClientDataSet的delta 資料??

尚未結案
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-15 17:47:36 IP:61.221.xxx.xxx 未訂閱
小弟用 ClientDataSet1.Append; ... ClientDataSet1.Post; ClientDataSet2.Data:=ClientDataSet1.Delta; ... ClientDataSet1.Active:=false; ClientDataSet1.Active:=true; ... 連續新增下 但在ClientDataSet1.Delta有多筆,並不會因為Active開關後清除delta 請問要如何清除ㄋ
------
ivankuo
mm
一般會員


發表:7
回覆:11
積分:8
註冊:2002-08-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-16 08:55:59 IP:203.204.xxx.xxx 未訂閱
Try It; ClientDataSet1.CancelUpdates;
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-16 08:57:09 IP:147.8.xxx.xxx 未訂閱
清除? Cancel all updates?    ClientDataSet1.Append; ... ClientDataSet1.Post; ClientDataSet2.Data:=ClientDataSet1.Delta; ... ClientDataSet1.CancelUpdates; ClientDataSet1.Active:=false; ClientDataSet1.Active:=true; ...
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-16 09:21:04 IP:61.221.xxx.xxx 未訂閱
ClientDataSet1.CancelUpdates會連新增的那一筆資料都刪除,我只想要清除Delta
------
ivankuo
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-16 09:40:15 IP:147.8.xxx.xxx 未訂閱
引言: ClientDataSet1.CancelUpdates會連新增的那一筆資料都刪除,我只想要清除Delta
ApplyUpdates(0).....
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-16 09:56:57 IP:61.221.xxx.xxx 未訂閱
小弟的insert updata delete 都是自行下command去updata DataBase的,所以沒有做ApplyUpdates的動作,因為ApplyUpdates有太多錯誤了。
------
ivankuo
mm
一般會員


發表:7
回覆:11
積分:8
註冊:2002-08-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-16 10:29:16 IP:203.204.xxx.xxx 未訂閱
資料異動不是透過ApplyUpdates這樣方式好嗎? 如果你想知道每筆Record的狀態 試看看 //--------------------- procedure TForm1.Button1Click(Sender: TObject); var RecordState :TUpdateStatus; begin RecordState := ClientDataSet1.UpdateStatus; if RecordState = usunmodified then showmessage('usunmodified') else if RecordState = usModified then showmessage('usModified') else if RecordState = usInserted then showmessage('usInserted') else if RecordState = usDeleted then showmessage('usDeleted'); end; //---------------------
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-16 10:35:28 IP:61.221.xxx.xxx 未訂閱
可是我用DBExpress ClientDataSet在ApplyUpdate的時候都會有一堆錯誤,像是災難性的錯誤..之前已經為了這個問題研究很多了,感覺很不穩定,也找不出是哪裡的錯誤,所以才下command自己來處理。
------
ivankuo
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-10-16 10:40:06 IP:218.163.xxx.xxx 未訂閱
用 MergeChangeLog Method 試試看 : ClientDataSet1.MergeChangeLog; 發表人 - Mickey 於 2003/10/16 11:02:34
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-16 11:03:05 IP:61.221.xxx.xxx 未訂閱
引言: 加 MergeChangeLog Method 試試看 : ClientDataSet1.MergeChangeLog; ClientDataSet1.CancelUpdates;
前輩這個方式可以耶,但是我有個疑問,MergeChangeLog 是將Delta修改那筆和原始那筆資料結合,那為何在之後下CancelUpdates卻不會將原來ClientDataSet所新增的那筆資料刪除??
------
ivankuo
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-10-16 11:08:06 IP:218.163.xxx.xxx 未訂閱
其實要不要 CancelUpdates 都無所謂,    因為 MergeChangeLog 後, Delta 已被清除,    你可以簡單的, 再 ClientDataSet2.Data:=ClientDataSet1.Delta;    看看
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-10-16 11:11:25 IP:147.8.xxx.xxx 未訂閱
引言: 可是我用DBExpress ClientDataSet在ApplyUpdate的時候都會有一堆錯誤,像是災難性的錯誤..之前已經為了這個問題研究很多了,感覺很不穩定,也找不出是哪裡的錯誤,所以才下command自己來處理。
How? I think the standard is to write a ProviderBeforeUpdateRecord for your TProvider..... If you are not using this way (I guess so), jsut and idea (not tested ):
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-10-16 11:30:44 IP:61.221.xxx.xxx 未訂閱
感謝Mickey前輩指點,了解了。 也感謝其他前輩熱心幫忙。
------
ivankuo
系統時間:2024-05-19 18:33:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!