ページの先頭行へ戻る
Symfoware Server V10.0.0 アプリケーション開発ガイド(ODBCドライバ編)

C.2.9 エラー処理

エラー処理を行うサンプルコードについて説明します。

On Errorステートメントで、エラー発生時のエラー処理ルーチンを指定します。RDOを使用してODBCエラーが発生した場合、rdoErrorオブジェクトにSQLSTATEやエラーメッセージなどが格納されます。SQLSTATEやエラーメッセージをキーにしてエラー処理を切り分け、その後の振る舞いを決めることが可能です。

参照

エラーメッセージの対処方法は“メッセージ集”を参照してください。

ODBC以外のエラーは、Errオブジェクトにエラー情報が格納されます。ODBC以外のエラーの対処方法は、Microsoft Visual Studio.NET ドキュメントを参照してください。

本サンプルコードでは、接続文字列を間違えて入力しエラーを発生させます。

発生したエラーのメッセージとSQLSTATEをメッセージボックスに表示します。

アプリケーションの手順

  1. rdoEnvironmentオブジェクトを生成します。

  2. On Errorステートメントを使用して、エラー処理ルーチンを設定します。

  3. rdoEnvironment.OpenConnectionメソッドでコネクションを接続しrdoConnectionオブジェクトを生成します。(パスワードを間違えて指定しエラーを発生させます)

  4. エラー処理ルーチンを記述します。
    rdoErrors.Countプロパティで格納されているrdoErrorオブジェクト数を取得します。
    rdoError.DescriptionプロパティでODBCのエラーメッセージを取得します。
    rdoError.SQLStateプロパティでSQLSTATEを取得します。
    rdoErrors.ClearメソッドでrdoErrorオブジェクトを削除します。
    Err.Descriptionプロパティでエラーメッセージを取得します。
    Err.ClearメソッドでErrオブジェクトを削除します。

'オブジェクト宣言
Dim Env As rdoEnvironment
Dim Con As rdoConnection

Dim i As Integer
Dim Err_Count As Integer
Dim msgstr As String

'1. rdoEnvironmentオブジェクトの生成
Set Env = rdoEngine.rdoEnvironments(0)

'2. エラー処理ルーチンの設定
On Error GoTo ErrorProc

'3, コネクション接続(パスワードを間違えて設定:エラー発生)
Set Con = Env.OpenConnection("DSN01", rdDriverNoPrompt, _
                             False, "UID=USER01;PWD=XXXXXX;")

'コネクション切断
Con.Close

'オブジェクトの破棄
Set Con = Nothing
Set Env = Nothing

Exit Sub

'4. エラー処理ルーチン
ErrorProc:
Err_Count = rdoEngine.rdoErrors.Count
If Err_Count > 0 Then
    For i = 0 To Err_Count - 1
        msgstr = msgstr & rdoEngine.rdoErrors(i).Description & Chr(10)
        msgstr = msgstr & "SQLSTATE: " & rdoEngine.rdoErrors(i).SQLState & Chr(10)
    Next
    rdoEngine.rdoErrors.Clear
Else
    msgstr = msgstr & Err.Description
    Err.Clear
End If
MsgBox msgstr, vbOKOnly, "Error"
'オブジェクトの破棄
Set Env = Nothing