エラー処理を行うサンプルコードについて説明します。
On Errorステートメントで、エラー発生時のエラー処理ルーチンを指定します。RDOを使用してODBCエラーが発生した場合、rdoErrorオブジェクトにSQLSTATEやエラーメッセージなどが格納されます。SQLSTATEやエラーメッセージをキーにしてエラー処理を切り分け、その後の振る舞いを決めることが可能です。
参照
エラーメッセージの対処方法は“メッセージ集”を参照してください。
ODBC以外のエラーは、Errオブジェクトにエラー情報が格納されます。ODBC以外のエラーの対処方法は、Microsoft Visual Studio.NET ドキュメントを参照してください。
本サンプルコードでは、接続文字列を間違えて入力しエラーを発生させます。
発生したエラーのメッセージとSQLSTATEをメッセージボックスに表示します。
アプリケーションの手順
rdoEnvironmentオブジェクトを生成します。
On Errorステートメントを使用して、エラー処理ルーチンを設定します。
rdoEnvironment.OpenConnectionメソッドでコネクションを接続しrdoConnectionオブジェクトを生成します。(パスワードを間違えて指定しエラーを発生させます)
エラー処理ルーチンを記述します。
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