a user transcation is alerady in progress 錯誤 |
答題得分者是:st33chen
|
jokesmile
一般會員 發表:5 回覆:9 積分:2 註冊:2007-11-08 發送簡訊給我 |
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 發送簡訊給我 |
您好,
可能是程式曾跳到 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 發送簡訊給我 |
你的問題應該出在底下藍色的位置
===================引 用 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |