ADO 錯誤訊息攔截 |
尚未結案
|
chiang
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2002-08-21 發送簡訊給我 |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
chiang
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2002-08-21 發送簡訊給我 |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
chiang
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2002-08-21 發送簡訊給我 |
謝謝,Hager. 我將delphi/source/VCL的ADO相關檔案COPY至測試路徑,就可以RUN了.但是還是無法攔截錯誤訊息,經程式測試發現以下問題 1. FOR 迴路的ADOERRORS.COUNT值為0
2. LOCATE 一個不存在資料也無任何反應 請大家幫忙指正謝謝 ! unit fADOErrorsMain; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, ExtCtrls, DBCtrls, Db, ADODB, StdCtrls, DBTables; type
TForm4 = class(TForm)
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
ADODataSet1emp_id: TStringField;
ADODataSet1fname: TStringField;
ADODataSet1minit: TStringField;
ADODataSet1lname: TStringField;
ADODataSet1job_id: TSmallintField;
ADODataSet1job_lvl: TWordField;
ADODataSet1pub_id: TStringField;
ADODataSet1hire_date: TDateTimeField;
DataSource1: TDataSource;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
lbADOErrors: TListBox;
btnSearchField: TButton;
edtFieldName: TEdit;
edtFieldValue: TEdit;
procedure ADODataSet1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure btnSearchFieldClick(Sender: TObject);
private
{ Private declarations }
procedure ShowADOErrors;
public
{ Public declarations }
end; var
Form4: TForm4; implementation {$R *.DFM} procedure TForm4.ADODataSet1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
//開始處理ADO的Errors物件
ShowADOErrors;
end; procedure TForm4.btnSearchFieldClick(Sender: TObject);
var
bResult : Boolean;
begin
try
bResult := ADODataSet1.Locate(edtFieldName.Text, edtFieldValue.Text, [loCaseInsensitive , loPartialKey]);
ShowADOErrors;
except
on E : Exception do
ShowMessage(E.Message);
end;
end; procedure TForm4.ShowADOErrors;
var
adoErrors : Errors;
adoError : Error;
iCount : Integer;
begin
adoErrors := ADOConnection1.Errors;
showMessage(inttostr(adoerrors.count));
for iCount := 0 to adoErrors.Count - 1 do // Iterate
begin
adoError := adoErrors.Item[iCount]; lbADOErrors.Items.Add('Error Number : ' IntToStr(adoError.Number));
lbADOErrors.Items.Add('Error Source : ' adoError.Source);
lbADOErrors.Items.Add('Error Description : ' adoError.Description);
lbADOErrors.Items.Add('Error HelpFile : ' adoError.HelpFile);
lbADOErrors.Items.Add('Error SQLState : ' adoError.SQLState);
lbADOErrors.Items.Add('Error NativeError : ' IntToStr(adoError.NativeError));
end; // for
end; end.
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
引言: procedure TForm4.btnSearchFieldClick(Sender: TObject); var bResult : Boolean; begin try bResult := ADODataSet1.Locate(edtFieldName.Text, edtFieldValue.Text, [loCaseInsensitive , loPartialKey]); ShowADOErrors; // 這一行應該放在 Except 下 except on E : Exception do ShowMessage(E.Message); end; end;另外, 書上不是說 Error 有分 Provider 的 Error 跟什麼的 Error 嗎? (書沒在身邊, 所以 ...) 您的 OnPostError 是什麼 Error 呢? |
chiang
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2002-08-21 發送簡訊給我 |
請參閱以下程式,我測試結果ADOERRORS.COUNT值為0,所以無任何錯誤訊息會被顯示出來,我想請問一下是程式撰寫有誤,還是call errors本身的vcl 有問題. procedure TForm4.ShowADOErrors;
var
adoErrors : Errors;
adoError : Error;
iCount : Integer;
begin
adoErrors := ADOConnection1.Errors; for iCount := 0 to adoErrors.Count - 1 do // Iterate
begin
adoError := adoErrors.Item[iCount]; lbADOErrors.Items.Add('Error Number : ' IntToStr(adoError.Number));
lbADOErrors.Items.Add('Error Source : ' adoError.Source);
lbADOErrors.Items.Add('Error Description : ' adoError.Description);
lbADOErrors.Items.Add('Error HelpFile : ' adoError.HelpFile);
lbADOErrors.Items.Add('Error SQLState : ' adoError.SQLState);
lbADOErrors.Items.Add('Error NativeError : ' IntToStr(adoError.NativeError));
end; // for
end;
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
chiang
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2002-08-21 發送簡訊給我 |
|
chiang
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2002-08-21 發送簡訊給我 |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |