Visual Basic
適用先: Access 2013、Office 2013
Microsoft Visual Basic で ADO イベントを処理するには、 WithEvents キーワードを使用してモジュール レベルの変数を宣言する必要があります。 この変数は、クラス モジュールの一部としてのみ宣言可能で、モジュール レベルで宣言する必要があります。 しかし、Visual Basic の Form オブジェクトもクラスであるため、この操作は見かけほど制約的ではありません。 ADO イベントを処理するための最も簡単な方法は、 WithEvents を使用して変数を宣言することです。 Connection オブジェクトの ConnectComplete イベントを処理する例を次に示します。
' BeginEventExampleVB02
Dim WithEvents connEvent As Connection
Attribute connEvent.VB_VarHelpID = -1
Dim strMsg As String
Private Sub Form_Load()
On Error GoTo ErrHandler:
Dim strConn As String
' Create a new object with event
' handling enabled.
strConn = "Provider='sqloledb';" & _
"Data Source='MySqlServer';" & _
"Initial Catalog='Northwind';" & _
"Integrated Security='SSPI';"
Set connEvent = New ADODB.Connection
connEvent.Open strConn
Exit Sub
ErrHandler:
MsgBox strMsg
End Sub
Private Sub connEvent_ConnectComplete(ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)
If adStatus = adStatusErrorsOccurred Then
If Not pError Is Nothing Then
Select Case pError.Number
Case adErrOperationCancelled
' The operation was cancelled in the
' Will event. Notify the user and exit.
strMsg = "I'm sorry you can't connect right now." & vbCrLf
strMsg = strMsg & " Click OK to exit."
Unload Me
Case Else
strMsg = "Error " & Format(pError.Number) & vbCrLf
strMsg = strMsg & pError.Description
strMsg = strMsg & " Click OK to exit."
Unload Me
End Select
Else
strMsg = "Error occured. Click OK to exit."
Unload Me
End If
End If
'frmWait.btnOK.Enabled = True
End Sub
' EndEventExampleVB02
イベント処理を有効にするため、 Connection オブジェクトが WithEvents キーワードを使用して Form レベルで宣言されています。 Form_Load イベント ハンドラーが、新しい Connection オブジェクトを connEvent に代入することにより、実際にオブジェクトを作成し、その接続を開きます。 当然のことながら、実際のアプリケーションでは、ここで示されているよりも多くの処理を Form_Load で実行します。