Rozróżnienie wyjątków tej samej klasy

0

Witam jak rozróżnić dwa wyjątki z tej samej klasy. Czy mogę jakoś pobrać numer wyjątku. Pierwszy wyjątek to jest że nie ma klucza w bazie, a drugi że nie można usunąć rekordu bo jest powiązany z innym rekordem istniejącym

    Query1.SQL.Text  := 'INSERT INTO  k2 (idO) values  (3)';
    try
        query1.ExecSQL;
    except
        on E: EDBEngineError do
           begin
       ShowMessage('Exception class name = '+E.ClassName);
       ShowMessage('Exception message = '+E.Message);
     end;
   end;

          try
          Query1.SQL.Text  := 'DELETE  FROM   k1 where id =1';
          query1.ExecSQL;
    except
        on E: EDBEngineError do
           begin
       ShowMessage('Exception class name = '+E.ClassName);
       ShowMessage('Exception message = '+E.Message);
     end;
   end;

3

Jeśli dobrze pamiętam: w EDbEngineError masz pole ErrorCount i tablice Errors w której masz obiekty z dokładnymi danymi błędów (typ TDBError) kazdy z nich ma pola ErrorCode, Category, SubCode, NativeError i Message. Możesz reagować jak chcesz na podstawie tego :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1