Delphi2007 dbExpress+MSSQL2000不能捕获异常。 |
答題得分者是:lucky4wj
|
pung4pung
一般會員 發表:8 回覆:8 積分:3 註冊:2007-10-14 發送簡訊給我 |
|
lucky4wj
一般會員 發表:1 回覆:11 積分:17 註冊:2008-11-06 發送簡訊給我 |
我也在研究这个问题.
徐新华的 delphi4核心编程技术 P186提到: post出错时会触发OnPostError事件,与之类似的还有OnDeleteError. 我的方式是: procedure TfrmMain.btnSaveClick(Sender: TObject); var n:integer; s:string; begin with dmMysql.smpTest do if ChangeCount > 0 then try Edit; post; n:=ApplyUpdates(0); str(n,s); if n<>0 then // note:有错误 showmessage('写回数据库时出错!数据未能存盘!共' s '条出错!'); except on e: exception do showmessage('错误信息: ' e.Message); end; end; 原因如下: function ApplyUpdates(MaxErrors:integer):Integer;virtual; 返回值标志错误数,所以如果有错误发生则返回值必<>0.
編輯記錄
lucky4wj 重新編輯於 2008-11-12 15:21:38, 註解 無‧
|
lucky4wj
一般會員 發表:1 回覆:11 積分:17 註冊:2008-11-06 發送簡訊給我 |
网络上搜索到一个方法,试验过确实能够使用.
========================= 在datasetProvider的onUpdateError raise E; 然后就可以在客户端的 try clientdataset1.applyUpdates(0); except on e:exception do ... end; ==================== 可是如果更改为 on e:edatabaseerror do 反而捕获不到. 很困惑!
編輯記錄
lucky4wj 重新編輯於 2008-11-20 18:11:43, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |