DBErrFo.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:3k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit DBErrFo;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   Grids, DBGrids, DB, DBTables, StdCtrls, AppEvnts;
  6. type
  7.   TForm1 = class(TForm)
  8.     Memo1: TMemo;
  9.     Label1: TLabel;
  10.     Table1: TTable;
  11.     DataSource1: TDataSource;
  12.     DBGrid1: TDBGrid;
  13.     Button1: TButton;
  14.     Button2: TButton;
  15.     Button3: TButton;
  16.     Button4: TButton;
  17.     Query1: TQuery;
  18.     ApplicationEvents1: TApplicationEvents;
  19.     procedure Button1Click(Sender: TObject);
  20.     procedure Button2Click(Sender: TObject);
  21.     procedure Button3Click(Sender: TObject);
  22.     procedure Button4Click(Sender: TObject);
  23.     procedure Table1DeleteError(DataSet: TDataSet; E: EDatabaseError;
  24.       var Action: TDataAction);
  25.     procedure Table1EditError(DataSet: TDataSet; E: EDatabaseError;
  26.       var Action: TDataAction);
  27.     procedure Table1PostError(DataSet: TDataSet; E: EDatabaseError;
  28.       var Action: TDataAction);
  29.     procedure ApplicationEvents1Exception(Sender: TObject; E: Exception);
  30.   private
  31.     { Private declarations }
  32.   public
  33.     procedure ShowError (E: EDBEngineError);
  34.   end;
  35. var
  36.   Form1: TForm1;
  37. implementation
  38. {$R *.DFM}
  39. procedure TForm1.ShowError(E: EDBEngineError);
  40. var
  41.   I: Integer;
  42. begin
  43.   Memo1.Lines.Add('');
  44.   Memo1.Lines.Add('Error: ' + (E.Message));
  45.   Memo1.Lines.Add('Number of errors: ' +
  46.     IntToStr(E.ErrorCount));
  47.   // iterate through the Errors
  48.   for I := 0 to E.ErrorCount - 1 do
  49.   begin
  50.     Memo1.Lines.Add('Message: ' +
  51.       E.Errors[I].Message);
  52.     Memo1.Lines.Add('   Category: ' +
  53.       IntToStr(E.Errors[I].Category));
  54.      Memo1.Lines.Add('   Error Code: ' +
  55.       IntToStr(E.Errors[I].ErrorCode));
  56.     Memo1.Lines.Add('   SubCode: ' +
  57.       IntToStr(E.Errors[I].SubCode));
  58.     Memo1.Lines.Add('   Native Error: ' +
  59.       IntToStr(E.Errors[I].NativeError));
  60.     Memo1.Lines.Add('');
  61.   end;
  62. end;
  63. procedure TForm1.Button1Click(Sender: TObject);
  64. begin
  65.   Table1.FieldByName ('Name').Value := 'something';
  66. end;
  67. procedure TForm1.Button2Click(Sender: TObject);
  68. var
  69.   S: String;
  70. begin
  71.   s := Table1.FieldByName ('Name').Value;
  72.   Table1.Insert;
  73.   Table1.FieldByName ('Name').Value := s;
  74.   Table1.Post;
  75. end;
  76. procedure TForm1.Button3Click(Sender: TObject);
  77. begin
  78.   Query1.SQL.Clear;
  79.   Query1.SQL.Add (
  80.     'select * from Countries where Population > 100000');
  81.   Query1.Open;
  82. end;
  83. procedure TForm1.Button4Click(Sender: TObject);
  84. begin
  85.   Query1.SQL.Clear;
  86.   Query1.SQL.Add (
  87.     'select * from Country where Populations > 100000');
  88.   Query1.Open;
  89. end;
  90. procedure TForm1.Table1DeleteError(DataSet: TDataSet; E: EDatabaseError;
  91.   var Action: TDataAction);
  92. begin
  93.   Memo1.Lines.Add (' -> Delete Error: ' + E.Message);
  94. end;
  95. procedure TForm1.Table1EditError(DataSet: TDataSet; E: EDatabaseError;
  96.   var Action: TDataAction);
  97. begin
  98.   Memo1.Lines.Add (' -> Edit Error: ' + E.Message);
  99. end;
  100. procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
  101.   var Action: TDataAction);
  102. begin
  103.   Memo1.Lines.Add (' -> Post Error: ' + E.Message);
  104. end;
  105. procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  106.   E: Exception);
  107. begin
  108.   Beep;
  109.   if E is EDBEngineError then
  110.     ShowError (EDBEngineError (E))
  111.   else
  112.     ShowMessage (E.Message);
  113. end;
  114. end.