全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1216
推到 Plurk!
推到 Facebook!

dbExpress 啟動交易時,出現「與異動管理員建立連線的要求遭到拒絶」訊息的 Trouble Shotting

 
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-09-15 08:30:34 IP:114.35.xxx.xxx 訂閱
前天收到同事傳來的一封郵件,裡面提到他有一個挑單畫面,挑單之前會先修改數量然後再挑單  (修改的數量不需要更新回資料庫)。挑單確定之後,根據挑選到的資料去異動另外一個資料表。可是,當異動另外一個資料表時,發生了「與異動管理員建立連線 的要求遭到拒絶」的錯誤訊息。

原先我以為是 MSDTC 服務沒有啟動,請他確定是否有啟動,同事說已經啟動了仍然發生錯誤,接下來同事貼了他的程式碼,說是在啟動交易時發生的錯誤訊息。

於是我想到是不是因為挑單畫面的「修改數量」產生了擱置的異動,使得接下來的交易啟動時,因為有擱置的異動而無法啟動?

在說明如何修改之前,先說明一下挑單畫面的結構。
挑 單畫面的組成很簡單,一個 PageControl,第一頁是挑單畫面,第二頁是查詢畫面。進入挑單時切到第一頁,可以預先傳入條件查詢出可供挑單的資料,也可以手動切換到第二頁自 行查詢出供挑單的資料。查詢是使用 SQLQuery DataSetProvider ClientDataSet,以 TDBGrid 顯示資料。

我的想法是:如果能避免產生「擱置的異動」,就不會阻擋到接下來的交易了。

於是做了這樣的修改:
  1. 清除畫面上 ClientDataSet 的 ProviderName 屬性
  2. ClientDataSet.Open 之前,設定 ProviderName 屬性,讓 ClientDataSet 可以接到後面的資料來源,把資料收進來
  3. ClientDataSet.Open 之後,清除 ProviderName 屬性,使 ClientDataSet 做出的所有異動與後面的資料來源隔離開來
經過這樣的修改,這個問題就解決了。在此提供給大家做個參考。
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
編輯記錄
sryang 重新編輯於 2011-09-14 18:31:21, 註解 重新排版‧
系統時間:2024-04-25 10:21:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!