主キー違反を特定してエラー処理するには?


あーりんとん  2014-06-26 16:08:14  No: 46410  IP: [192.*.*.*]

こんにちは。
Delphi7を使用しています。
データベースへのInsertの際、
主キー違反で帰ってきたときにかぎり、'主キーが重複しています'
とメッセージダイアログを出したいのですが...
except on エラー名 で、エラー名に該当するものがどうしても!見つかりません。
小さな質問で大変恐縮なのですが、ご教示いただけませんか?

編集    削除
大きなお世話  2014-06-26 23:16:35  No: 46411  IP: [192.*.*.*]

小さな質問だからと言って出す情報も最小限では誰も分かりません。
せめて何のデータベースを使用しているか、
それに接続する方法は何かくらいは書きましょう。

編集    削除
あーりんとん  2014-07-21 09:35:26  No: 46412  IP: [192.*.*.*]

返答が大変遅くなりました。よろしければご回答くだされば幸いです。
ODBC(Oracle8i)への接続をしています。
また、このようなデータベースへの接続エラーで発生する例外が、
どこかのHP上でまとめられていれば、是非ご教示いただきたいです。

よろしくお願い致します。

編集    削除
Quest  2014-07-21 21:11:52  No: 46413  IP: [192.*.*.*]

Delphi7なのでBDE経由での接続だと思いますが
except
  on E: EDBEngineError do
  begin
    if E.Errors[0].ErrorCode = DBIERR_KEYVIOL then
      ShowMessage('主キーが重複しています')
    else
      ShowMessage('何らかのDBエラー '+E.Message);
  end;
end;
でどうでしょうか?

これでダメなら
except
  on E: Exception do
  begin
    ShowMessage(E.Message);
  end;
end;
として、主キー違反の時にそれを特定できる文字列を探して
except
  on E: Exception do
  begin
    if Pos('特定の文字列', E.Message) > 0 then
      ShowMessage('主キーが重複しています')
    else
      ShowMessage('何らかのDBエラー '+E.Message);
  end;
end;
って方法もあります。

編集    削除