如何抓取adoStoreproc的錯誤代碼?? |
尚未結案
|
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
小弟看了李維Delphi 5.x ADO/MTS/COM一書中,處理錯誤訊息,
我遇到的狀況為,假設PK為
A(日期)
B(人員ID)
C(部門ID)
三個欄位,
當我新增一筆資料的時候,A為USER 輸入值, B,C為預設空白,然後再由stored procedure update B,C兩個欄位的值(此值為抓取user登入的ID,所以同一個輸入時,B,C兩欄位一定相同),且update後絕不會為空白,但是當user輸入重複的日期時,在ADOQuery.post時是可以過的,但是在ADOStoredproc.execute時,會造成PK重複,可是我要在哪抓取錯誤代碼ㄋ??
------
ivankuo |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 在ADOQuery.post時是可以過的,但是在ADOStoredproc.execute時,會造成PK重複,可是我要在哪抓取錯誤代碼ㄋ??Hi, 利用 try.. except.. end; 一樣的方式就可以了. 只是是否要再多包一層 transaction 就看你要的功能了. try // ADOConnection1.BeginTrans; ADOQuery.post; ADOStoredproc.execute; // ADOConnection1.CommitTrans; except // ADOConnection1.RollbackTrans; // something you can do. end; |
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 我要在ADOQuery1PostErrorc還是ADOStoredProc1PostError抓取錯誤代碼ㄋ??就你的問題敘來看, post 正常但是 execute 發生問題來看, 應該是不希望出現這樣的資料吧, 如此一來會發生資料的不完 整現象, 若是要明白的找出原因, 就包兩層 try.. 如下: try ADOConnection1.BeginTrans; ADOQuery.post; try ADOStoredproc.execute; ADOConnection1.CommitTrans; except ADOConnection1.RollbackTrans; Showmessage('ADOStoredproc.execute Error'); end; except ADOConnection1.RollbackTrans; Showmessage('ADOQuery.post Error'); end;請務必記得包 transaction 時, 因為有使用 showmessage() 這種會 waiting user 的行為, 務必先 commit 或是 rollback 完成後再showmessage, 以免 user 未處理這個 message , 造成程式 waiting 在那個 transaction 裡, 使得 db 整個會被 lock (鎖定), 就不是理想的程式設計流程了!! |
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 我要在ADOQuery1PostErrorc還是ADOStoredProc1PostError抓取錯誤代碼ㄋ??經我的測試,當ADOStoredProc1發生錯誤時,不會進入ADOStoredProc1PostError執行,所有只好寫了一個procedure去跑: procedure TForm1.ShowError; begin Case ADOConnection1.Errors.Item[0].Get_NativeError of 2627: raise Exception.Create('資料重覆,請重新輸入!'); 515: raise Exception.Create('欄位不可空白,請重新輸入!'); ..... else raise Exception.Create('尚有其他錯誤,請洽程式設計師!'); end; end;
------
~小弟淺見,參考看看~ |
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |