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

如何讓多個 DataSetProvider 的異動在同一個交易中

答題得分者是:jieshu
matrix66
一般會員


發表:3
回覆:7
積分:2
註冊:2002-05-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-19 19:58:15 IP:218.166.xxx.xxx 未訂閱
DataSetProvider異動時會自己呼叫StartTransaton and Commit 但如果多個DataProvider異動再同一個交易中, 只要一個異動失敗 就全部 RollBack
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-19 21:32:50 IP:218.16.xxx.xxx 未訂閱
這種整體的 Transaction 要用 Connection 元件來做如 BDE 的 TDatabase ADO 的 TADOConnection dbExpress 的 TSQLConnection 等等 請你參看Help中你用的相關Connection元件的 StartTransaction, Commit, Rollback 等 Methods
matrix66
一般會員


發表:3
回覆:7
積分:2
註冊:2002-05-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-19 23:40:27 IP:218.166.xxx.xxx 未訂閱
Justmade 大大 你所說的我都知道,但是每次呼叫ClientDataSet的ApplyUpdates就會 觸發DataSetProvider的InternalApplyUpdate, 並開始一個Transaction, 所以執行兩個 ClientDataSet.ApplyUpdates, 就會產生兩個Transaction, 這樣就會發生第一個ClientDataSet ApplyUpdates成功, 第二個失敗, 就無法 RollBack 第一個ClientDataSet所異動的資料...    
引言: 這種整體的 Transaction 要用 Connection 元件來做如 BDE 的 TDatabase ADO 的 TADOConnection dbExpress 的 TSQLConnection 等等 請你參看Help中你用的相關Connection元件的 StartTransaction, Commit, Rollback 等 Methods
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-20 13:08:00 IP:203.204.xxx.xxx 未訂閱
引言: DataSetProvider異動時會自己呼叫StartTransaton and Commit 但如果多個DataProvider異動再同一個交易中, 只要一個異動失敗 就全部 RollBack
AppServer寫一個Function給Client呼叫,傳入所有ClientDataSet.Delta,在AppServer的Function交易中下DataSetProvider.ApplyUpdate即可。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
系統時間:2024-05-03 19:49:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!