はてなブックマークに追加
Facebookでシェア
Google+でシェア
Twitterでシェア
接続結果やSQL実行結果のチェックをするサンプル
データベースへの接続や、SQLの実行結果をチェックするサンプルです。
サンプルプロシージャ
Functionプロシージャ「f_Connection」が接続処理、「f_ExecSelect」がSQLを実行するプロシージャです。どちらのプロシージャも、失敗すると戻り値にFalseを返します。

エラー処理は、これらのプロシージャ内で行っています。エラーが発生したときは、ErrorSubへジャンプし、ここでエラーの詳細を表示するSubプロシージャ「f_ErrorInfo」を呼び出します。

Option Compare Database
Option Explicit

Dim adoCON As ADODB.Connection
Dim adoRS  As ADODB.Recordset

Sub s_Connection_Execute_Sample()

    'Access VBA Tips
    '7.1 接続結果やSQL実行結果のチェックをする

    Dim strSQL As String

    Set adoCON = New ADODB.Connection

    '接続処理と結果のチェック
    If f_Connection() = True Then

       strSQL = "Select Count(*) As 件数 From アドレス帳テーブル"

       'SQLの実行と結果のチェック
       If f_ExecSelect(strSQL) = True Then
          MsgBox adoRS("件数") 'SQL正常終了時
       End If

       '②データベースのクローズ
       adoCON.Close

    End If

    Set adoCON = Nothing

End Sub

'----------------------------------------------------------------------
'接続処理
'----------------------------------------------------------------------
Function f_Connection() As Boolean

    Dim objErrItem As Error

    f_Connection = False 'プロシージャの結果を、とりあえずFalse

    '①ADOを使いMDBをオープンします
    On Error GoTo ErrorSub 'エラー制御ON
    adoCON.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\happy\addressbook.mdb;"
    On Error GoTo 0 'エラー制御OFF

    '接続できたときは、プロシージャの結果をTrue
    f_Connection = True
    
    Exit Function

ErrorSub:

    '接続できなかったときはイミディエイトウィンドウへ詳細を出力
    Call f_ErrorInfo(adoCON)

End Function

'----------------------------------------------------------------------
'SQLの実行
'----------------------------------------------------------------------
Function f_ExecSelect(tmpSQL As String) As Boolean

    Dim objErrItem As Error

    f_ExecSelect = False 'プロシージャの結果を、とりあえずFalse

    '①ADOを使いMDBをオープンします
    On Error GoTo ErrorSub 'エラー制御ON
    Set adoRS = adoCON.Execute(tmpSQL)
    On Error GoTo 0 'エラー制御OFF

    '実行できたときは、プロシージャの結果をTrue
    f_ExecSelect = True

    Exit Function

ErrorSub:
       
    '実行できなかったときはイミディエイトウィンドウへ詳細を出力
    Call f_ErrorInfo(adoCON)

End Function

'----------------------------------------------------------------------
'エラー詳細の表示
'----------------------------------------------------------------------
Sub f_ErrorInfo(tmpCon As ADODB.Connection)

    Dim objErrItem As Error

    'イミディエイトウィンドウへエラー詳細を出力
    Set objErrItem = tmpCon.Errors.Item(0)
    Debug.Print "Description=" & objErrItem.Description
    Debug.Print "HelpContext=" & objErrItem.HelpContext
    Debug.Print "HelpFile=" & objErrItem.HelpFile
    Debug.Print "NativeError=" & objErrItem.NativeError
    Debug.Print "Number=" & objErrItem.Number
    Debug.Print "Source=" & objErrItem.Source
    Debug.Print "SQLState=" & objErrItem.SQLState
    Set objErrItem = Nothing

End Sub


Copyright(C) 1999-2015 結城圭介(Ver.3.51) All rights reserved