次の方法で共有


ADO イベントのインスタンス化: Visual Basic

Visual Basic で ADO イベントを処理するには、WithEvents キーワードを使用してモジュール レベルの変数を宣言する必要があります。 変数はクラス モジュールの一部としてのみ宣言でき、モジュール レベルで宣言する必要があります。 ただし、Visual Basic の Form オブジェクトもクラスであるため、これは見かけほど制限的ではありません。 ADO イベントを処理する最も簡単な方法は、WithEvents を使って変数を宣言することです。 次の例では、Connection オブジェクトの ConnectComplete イベントを処理します。

' BeginEventExampleVB02  
Dim WithEvents connEvent As Connection  
Attribute connEvent.VB_VarHelpID = -1  
  
Private Sub Form_Load()  
Dim strConn As String  
  
   ' Create a new object with event  
   ' handling enabled.  
   strConn = "Provider=sqloledb;" & _  
      "Data Source=MyServer;" & _  
      "Initial Catalog=Northwind;" & _  
      "Integrated Security=SSPI;"  
   Set connEvent = New ADODB.Connection  
   connEvent.Open strConn  
End Sub  
  
Private Sub connEvent_ConnectComplete(ByVal pError As ADODB.Error, _  
    adStatus As ADODB.EventStatusEnum, _  
    ByVal pConnection As ADODB.Connection)  
Dim strMsg As String  
  
   If adStatus = adStatusErrorsOccurred 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  
   End If  
   frmWait.btnOK.Enabled = True  
End Sub  
' EndEventExampleVB02  

イベント処理を有効にするには、Connection オブジェクトを Form レベルで WithEvents キーワードを使って宣言します。 実際には、Form_Load イベント ハンドラーにより、Connection オブジェクトを connEvent に割り当てることでオブジェクトを作成してから、接続を開きます。 もちろん、実際のアプリケーションでは、ここで説明した処理以外も Form_Load イベント ハンドラー内で行われます。