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

如何擷取SQL的錯誤訊息

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


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-05 10:43:53 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.
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-05 11:47:55 IP:63.84.xxx.xxx 未訂閱
您好﹗    請參考如下看看﹕ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=36687 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26413 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28106        ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
may
一般會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-05 14:14:58 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;
breeze_1
一般會員


發表:33
回覆:72
積分:21
註冊:2003-05-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-06 03:48:33 IP:202.104.xxx.xxx 未訂閱
徣樓主寶地也問問這個問題
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-06 07:48:58 IP:202.39.xxx.xxx 未訂閱
1.在要 Insert 一筆之資料前就先做檢查, 而非讓程式自己觸發 Error, 這樣比較好做控制 2.
var 
  iCount: integer;
begin
  iCount := 0;
  for i:=1 to Table1.Recordset.RecordCount do begin
    try
      // Insert資料到另一個Table 
      Inc(iCount);
    except
      Memo1.Lines.Add(Tabel1.FieldByName('ID').AsString   ' Insert 失敗');
    end;
    Table1.Next;
  end;
  ShowMessage('共完成了'   IntToStr(iCount) '筆' );
end;
--- 歡迎光臨 KTop 研究院--<-<-<@
may
一般會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-08 08:12:43 IP:203.160.xxx.xxx 未訂閱
不好意思,再請問 Inc(iCount); 指令的意思,謝謝!!
may
一般會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-08 08:12:57 IP:203.160.xxx.xxx 未訂閱
不好意思,再請問 Inc(iCount); 指令的意思,謝謝!!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-08 08:20:21 IP:202.39.xxx.xxx 未訂閱
Inc(iCount); 即 iCount := iCount + 1; Inc(iCoun, 2); 即 iCount := iCount + 2; Inc(iCoun, 3); 即 iCount := iCount + 3; ... 依此類推 與 Inc 相反的函式為 Dec    --- 歡迎光臨 KTop 研究院--<-<-<@
may
一般會員


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-08 11:42:28 IP:210.202.xxx.xxx 未訂閱
謝謝hagar的回答,我整理了一下: 另外再請教一個問題當新增到Memo時,如果長度及筆數太多時,要如何出現上下跟左右的捲軸呢? //先宣告一個 Function 來檢查計劃編號是否重覆 // Function Check(plan_no:string):Boolean; procedure TForm10.Button2Click(Sender: TObject); var i,iCount:integer; begin if Table1.Recordset.RecordCount <>0 then begin for i:=1 to Table1.Recordset.RecordCount do begin plan_no:= trim(Table1.FieldByName('plan_no').AsString) ; IF Check(plan_no)=true then //到Function去檢查計劃編號是否重覆 Memo1.Lines.Add('計劃編號: ' Table1.FieldByName('plan_no').AsString '資料重覆!! 新增失敗') Else Begin 新增資料到另一個Table Inc(iCount); end; Table1.Next ; end ; ShowMessage('共完成了' IntToStr(iCount) '筆' ); end else showmessage ('查無資料!!' ); end; Function Check(plan_no:string):Boolean; begin //利用 ADOQuery1去檢查傳進來到計劃編號是否已經存在,如果已經存在就回傳True的布林值 IF ADOQuery1.Eof=False then result :=true; End ;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-08 12:19:24 IP:202.39.xxx.xxx 未訂閱
Memo1.Scrollbars := ssBoth; // 水平跟垂直的 Scrollbars 都出現 Memo1.Scrollbars := ssNone; // 水平跟垂直的 Scrollbars 都不出現 Memo1.Scrollbars := ssHorizontal ; // 水平的 Scrollbars 出現 Memo1.Scrollbars := ssVertical; // 垂直的 Scrollbars 出現        --- 歡迎光臨 KTop 研究院--<-<-<@
系統時間:2024-05-23 19:19:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!