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

用interbase元件存取firebird資料庫,若啟用交易控制卻不能儲存,為什麼?

答題得分者是:P.D.
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-05-08 16:21:43 IP:125.224.xxx.xxx 訂閱
用interbase元件存取firebird資料庫,若啟用交易控制卻不能儲存,且會關閉資料集,為什麼呢? 要啟動交易控制是因為希望IBorders和IBparts之記錄要嬤都儲存,不然都不儲存,之前我是透過IBorders和IBparts之onupdateerror事件來捕捉錯誤並修正錯誤,但會發生IBorders之記錄有儲存但IBparts之記錄卻沒有儲存,為了解決這問題,我寫一段交易控制code

IBorders和IBparts之cacheupdates都設定為true
dbgrid1透過datasource連接IBorders,dbgrid2透過datasource連接IBparts
IBorders和IBparts是一對多連結之主要明細表

procedure Tmaster_detialForm.Button10Click(Sender: TObject);
var totalfee:integer;
begin
try
datamod.IBTransaction1.StartTransaction;
datamod.IBparts.First;
while not datamod.IBparts.Eof do
begin
totalfee:=totalfee datamod.IBparts.FieldValues['fee'];
datamod.IBparts.Next;
end;
datamod.IBorders.Edit;
datamod.IBorders.FieldByName('total').Value:=totalfee;
datamod.IBorders.Post;
datamod.IBDatabase1.ApplyUpdates([datamod.IBorders]);
datamod.IBDatabase1.ApplyUpdates([datamod.IBparts]);
datamod.IBTransaction1.Commit;
except
datamod.IBTransaction1.Rollback;
end;
end;

PS: 為什麼delphi 7.0裡面沒有介紹用interbase元件存取interbase資料庫,並啟用交易控制之範例程式,不曉得那裡有這類範例程式以供參考.
編輯記錄
ry_lee 重新編輯於 2008-05-08 16:34:55, 註解 無‧
ry_lee 重新編輯於 2008-05-08 16:36:58, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-05-09 01:50:43 IP:61.67.xxx.xxx 未訂閱
個人有些疑問
1.IBorder, 與 IBpart 是同屬於一個 transaction 嗎?
2.案例中, 完全沒看到 IBpart有進行任何異動, 何以 IBpart 會進行applyupdates呢? 這樣是會觸發錯誤的,
也正解釋, 為何 IBorder有存入(因為有Applyupdates), 但IBpart確沒有
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-05-09 08:26:45 IP:125.224.xxx.xxx 訂閱
1.IBorder, 與 IBpart 是同屬於一個 transaction 嗎?ANS: 是
2.案例中, 完全沒看到 IBpart有進行任何異動, 何以 IBpart 會進行applyupdates呢? ANS: IBpart 是經由dbgrid2新增或修改,之後按dbnavigator2之post鈕以儲存

===================引 用 P.D. 文 章===================
個人有些疑問
1.IBorder, 與 IBpart 是同屬於一個 transaction 嗎?
2.案例中, 完全沒看到 IBpart有進行任何異動, 何以 IBpart 會進行applyupdates呢? 這樣是會觸發錯誤的,
也正解釋, 為何 IBorder有存入(因為有Applyupdates), 但IBpart確沒有
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-05-09 15:00:48 IP:61.67.xxx.xxx 未訂閱
不清楚你的 IBorder 與 IBpart 的主從關係與關聯性
1.建議你要除錯的話, 先將 order 與 part 分開兩個 transaction , 分別存入看是否都會進去, 如果會代表兩個table 的連結關係與transaction有關係, 那試著把part先applyupdate, 再 order applyupdate
===================引 用 ry_lee 文 章===================
1.IBorder, 與 IBpart 是同屬於一個 transaction 嗎?ANS: 是
2.案例中, 完全沒看到 IBpart有進行任何異動, 何以 IBpart 會進行applyupdates呢? ANS: IBpart 是經由dbgrid2新增或修改,之後按dbnavigator2之post鈕以儲存
系統時間:2024-05-16 16:13:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!