全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1462
推到 Plurk!
推到 Facebook!

Delphi中如何取得SQL傳來的錯誤訊息,來判斷是何種錯誤呢?

答題得分者是:wenjung
may
一般會員


發表:32
回覆:26
積分:11
註冊:2003-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-05 10:49:07 IP:210.202.xxx.xxx 未訂閱
請問在Delphi中如何取得SQL傳來的錯誤訊息,來判斷是何種錯誤呢? 例如在SQL中的Proj_State table有設primary key,如果Insert相同的值 就會出現以下的錯誤提示訊息,那在Delphi中如何擷取相同的訊息呢? 'Proj_State' table - Unable to create index 'PK_Proj_State'. ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a duplicate key was found. Most significant primary key is '92-2626-E-231-006--01 '. [Microsoft][ODBC SQL Server Driver][SQL Server]Could not create constraint. See previous errors.
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-05 11:18:49 IP:210.71.xxx.xxx 未訂閱
請您試一下用 Try ... except on E: exception  去取得當您的SQL command 產生錯誤時的 E.Message 
may
一般會員


發表:32
回覆:26
積分:11
註冊:2003-02-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-05 14:17:01 IP:203.160.xxx.xxx 未訂閱
程式是在按下Button後執行,雖說這樣可截取到錯誤訊息,但是我的需求如下,謝謝!! 1.可判斷錯誤發生的原因再來自訂顯示的錯誤訊息 2.我發現假設我要Insert 10筆資料,如在第5筆發生錯誤時,就會停掉,那接下來的資料也沒辦法Insert進去了,可否讓程式繼續執行完,最後只要告訴使用者哪筆沒有成功即可。 for i:=1 to Table1.Recordset.RecordCount do begin try Insert資料到另一個Table except on E: EDatabaseError do ShowMessage(E.Message); end; Table1.Next ; end; showmessage ('共完成了' inttostr( Table1.Recordset.RecordCount) '筆' ); end else showmessage ('查無資料!!' ); end;
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-05 16:00:03 IP:61.220.xxx.xxx 未訂閱
你的資料庫是那種的呀?? oracle裡2000之後的錯誤訊息可以自訂, 我想其它資料庫應該也有相同的功能,所 以如果你是使用store procedure來針對 資料庫動作應該可以自訂,沒問題,不過 store procedure當然得要自己寫啦... 如我這不是你要的答案,那你可能要說清 楚你的資料庫是那一種,程式的寫法,你 也要說明,我才能看看能不能幫你想想辦 法....
may
一般會員


發表:32
回覆:26
積分:11
註冊:2003-02-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-05 16:06:22 IP:210.202.xxx.xxx 未訂閱
謝謝你的幫忙!! 我是Delphi6.0 SQL 2000。 我是希望透過Delphi來獲得錯誤訊息。
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-05 16:22:26 IP:61.220.xxx.xxx 未訂閱
SQL 2000 唉...這個我能幫你的就不多了 1.我這兩年來都是跟ORACLE在打交道 2.SQL SERVER是好久以前用的,而且用的不深入 不過還是提供你ORACLE的方法: 相信懂SQL SERVER的人看了可以提供你方法的 還有我要更正一件事,ORACLE 20000之後才是自 定的,剛才打了一個0 SELECT COUNT(*) INTO ICOUNT FROM CUSTOMER WHERE CUST_NO = 'XXXXX' IF ICOUNT <> 0 THEN RAISE_APPLICATION_ERROR(-20008,CUST_NO||'客戶代號已存在!'); END IF; 以上是ORACLE自訂錯誤訊息的方法,不知道對妳有沒有幫助....
may
一般會員


發表:32
回覆:26
積分:11
註冊:2003-02-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-05 16:46:14 IP:203.160.xxx.xxx 未訂閱
謝謝你的回答,我再試試看
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-09 09:01:33 IP:211.21.xxx.xxx 未訂閱
引言: 請問在Delphi中如何取得SQL傳來的錯誤訊息,來判斷是何種錯誤呢? 例如在SQL中的Proj_State table有設primary key,如果Insert相同的值 就會出現以下的錯誤提示訊息,那在Delphi中如何擷取相同的訊息呢? 'Proj_State' table - Unable to create index 'PK_Proj_State'. ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a duplicate key was found. Most significant primary key is '92-2626-E-231-006--01 '. [Microsoft][ODBC SQL Server Driver][SQL Server]Could not create constraint. See previous errors.
使用BDE請參考這篇文章:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26413 使用ADO請參考這篇文章:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28106
------
~小弟淺見,參考看看~
系統時間:2024-06-28 5:17:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!