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

a user transcation is alerady in progress 錯誤

答題得分者是:st33chen
jokesmile
一般會員


發表:5
回覆:9
積分:2
註冊:2007-11-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-04 11:45:46 IP:221.169.xxx.xxx 訂閱
DB.StartTransaction;
try 跑到這裡有時都會出現
( 查詢 語法 )
if dm.Qytable.RecordCount > 0 then
begin
showmessage('已有此筆紀錄,請再重新確認後輸入');
exit;
end;
try
i := strtoint(mountv.text) ;
except
showmessage('請購數量錯誤,請更正');
exit;
end;
strSql:='';
(sql增加語法)


Qydata.ExecSQL;
DB.Commit;
except
DB.Rollback;
showmessage('新增資料失敗');
raise;
end;
showmessage('新增功能完成');
BtnSelect2Click(Sender);

end;

求救 第一筆 第二筆資料都沒問題 可是有時候跑到一半上面那個紅色部份有時都會出現 " a user transcation is alerady in progress"
這時候要重新登入 才恢復正常

有查過網路 好像是說不需顯性的啟動事務....這句話我都聽不懂 = =""
是不是 我transaction後 要中斷才可以再新增新一筆資料阿
有什麼解決方案嗎????
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-04 13:22:35 IP:122.116.xxx.xxx 未訂閱
您好,

可能是程式曾跳到
showmessage('已有此筆紀錄,請再重新確認後輸入');

showmessage('請購數量錯誤,請更正');
就 exit 出來, 這時 transaction 還是 started .
再一次 starttransaction 就會發生那樣的錯誤

試著把
DB.StartTransaction;
調到
Qydata.ExecSQL;
之前看看.


===================引 用 jokesmile 文 章===================
DB.StartTransaction;
try 跑到這裡有時都會出現
( 查詢 語法 )
if dm.Qytable.RecordCount > 0 then
begin
showmessage('已有此筆紀錄,請再重新確認後輸入');
exit;
end;
try
i := strtoint(mountv.text) ;
except
showmessage('請購數量錯誤,請更正');
exit;
end;
strSql:='';
(sql增加語法)


Qydata.ExecSQL;
DB.Commit;
except
DB.Rollback;
showmessage('新增資料失敗');
raise;
end;
showmessage('新增功能完成');
BtnSelect2Click(Sender);

end;

求救 第一筆 第二筆資料都沒問題 可是有時候跑到一半上面那個紅色部份有時都會出現 " a user transcation is alerady in progress"
這時候要重新登入 才恢復正常

有查過網路 好像是說不需顯性的啟動事務....這句話我都聽不懂 = =""
是不是 我transaction後 要中斷才可以再新增新一筆資料阿
有什麼解決方案嗎????
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
P.D.
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-04 23:31:28 IP:61.67.xxx.xxx 未訂閱
你的問題應該出在底下藍色的位置
===================引 用 jokesmile 文 章===================
DB.StartTransaction;
try 跑到這裡有時都會出現
( 查詢 語法 )
if dm.Qytable.RecordCount > 0 then
begin
showmessage('已有此筆紀錄,請再重新確認後輸入');
exit; ==> 因為前面你下了 StartTransaction 開啟了交易, 在可能在某筆出狀況於此下離開指令, 交易仍在, 所以當下一筆要進行交易時, 造成 DB.StartTransaction 出錯, 因此你應該在 exit 之前下 DB.RollBack 或做其他處置
end;
try
i := strtoint(mountv.text) ;
except
showmessage('請購數量錯誤,請更正');
exit;
end;
strSql:='';
(sql增加語法)


Qydata.ExecSQL;
DB.Commit;
except
DB.Rollback;
showmessage('新增資料失敗');
raise;
end;
showmessage('新增功能完成');
BtnSelect2Click(Sender);

end;

求救 第一筆 第二筆資料都沒問題 可是有時候跑到一半上面那個紅色部份有時都會出現 " a user transcation is alerady in progress"
這時候要重新登入 才恢復正常

有查過網路 好像是說不需顯性的啟動事務....這句話我都聽不懂 = =""
是不是 我transaction後 要中斷才可以再新增新一筆資料阿
有什麼解決方案嗎????
jokesmile
一般會員


發表:5
回覆:9
積分:2
註冊:2007-11-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-11 21:21:11 IP:220.131.xxx.xxx 訂閱
 對不起 最近有些忙
本來想要測試過再給分的 沒想到....
一忙就忘了給了
不過 照st33chen所說的 修改了程式碼後照目前跑起來正常

sorry sorry ............orz
系統時間:2024-05-06 8:15:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!