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

N-TIER TRANSATCION 下以多個CLIENTDATASET寫入DB

缺席
dky
一般會員


發表:12
回覆:30
積分:13
註冊:2004-06-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-25 09:48:13 IP:220.135.xxx.xxx 未訂閱
請教一下各位: 之前尋找過其他的文章 若要N-TIER要作transaction是以 一次送入數個clientdataset.delta到server端 再將數個delta包在server中作transaction,錯誤則rollback (錯誤請指正) 之後有兩個問題請教 1.clientdataset(以下簡稱cds) 如果cds1,cds2,cds3的db 寫入順序是1,2,3,1,2,3,1,2,3 那將delta一次送到server端時,還能得到正確的寫入結果嗎 會不會變成1,1,1,2,2,2,3,3,3 (希望不會表達的很模糊) 2.發文中提到client端是以cds.changecount和varisnull(cds.delta) 去判定有無變更資料再送到server 可是我試的結果,只有用append才能增加changecount cds.execute的(insert,delete)執行並不會增加changecount 所以,是否無法把clientdataset.Execute等sql執行加入transaction
ATEIN
高階會員


發表:105
回覆:320
積分:125
註冊:2002-07-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-10 14:06:43 IP:203.204.xxx.xxx 未訂閱
引言: 請教一下各位: 之前尋找過其他的文章 若要N-TIER要作transaction是以 一次送入數個clientdataset.delta到server端 再將數個delta包在server中作transaction,錯誤則rollback (錯誤請指正) 之後有兩個問題請教 1.clientdataset(以下簡稱cds) 如果cds1,cds2,cds3的db 寫入順序是1,2,3,1,2,3,1,2,3 那將delta一次送到server端時,還能得到正確的寫入結果嗎 會不會變成1,1,1,2,2,2,3,3,3 (希望不會表達的很模糊) 2.發文中提到client端是以cds.changecount和varisnull(cds.delta) 去判定有無變更資料再送到server 可是我試的結果,只有用append才能增加changecount cds.execute的(insert,delete)執行並不會增加changecount 所以,是否無法把clientdataset.Execute等sql執行加入transaction
DHM 回答1: 一般而言,更新一筆資料,其實是個別的ID。 若更新,對同一table的record,其執行順序是固定的;確定沒錯。 若cds 寫入有順序性,當然不會改變,但若另一端AP程式,有設定 當有人寫入時,即不更新的中斷行為時,如CDS2有許多人同時使用 而當您以123寫入時即發生1,3 有寫入,但2卻沒寫入的例外。 因此為了確保可以依序寫入123 順序,可以如下這樣做: 1.建立一個 交易確保功能: 如: 當cds1寫完成,令flag=true;接著 cds2判斷cds1的flag=true時執行cds2寫入動作,令的flag=true;cds3.判斷cds2的flag=true 時 執行cds3寫入。 若發現cds2被其它ap鎖了或使用時,回復cds1/cds2/cds3 的old.data 採循序處理a(1)->b(2)->c(3),而不要用批次一次執行x(123)。以確保交易順序性。 回答2: 請參閱: http://delphi.ktop.com.tw/quicksearch.exe/quicksearch?SearchStr=changecount 可以找到您的需求。 可以改寫寫入方式,在 DataSetProvider [OnBeforeUpdateData](只要有任何字元包括註解在事件內時,表示要由自己去處理所有更新異動的動作,不由原來的去自動執行)事件內改寫入 而不用原來的方式處理。 發表人 - atein 於 2005/09/10 14:41:26 發表人 - atein 於 2005/09/10 14:45:17
------
ATEIN
系統時間:2024-04-26 12:32:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!