다음을 통해 공유


이벤트 매개 변수

모든 이벤트 처리기에는 이벤트 처리기를 제어하는 상태 매개 변수가 있습니다. Complete 이벤트의 경우 이 매개 변수는 이벤트를 생성한 작업의 성공 또는 실패를 나타내는 데도 사용됩니다. 또한 대부분의 Complete 이벤트에는 발생할 수 있는 오류에 대한 정보를 제공하는 오류 매개 변수와 작업을 수행하는 데 사용되는 ADO 개체를 참조하는 하나 이상의 개체 매개 변수가 있습니다. 예를 들어 ExecuteComplete 이벤트에는 이벤트와 연결된 Command, Recordset, Connection 개체에 대한 개체 매개 변수가 포함됩니다. 다음 Visual Basic 예제에서는 Execute 메서드에서 사용되는 Command, Recordset, Connection 개체를 나타내는 pCommand, pRecordset, pConnection 개체를 볼 수 있습니다.

Private Sub connEvent_ExecuteComplete(ByVal RecordsAffected As Long, _  
     ByVal pError As ADODB.Error, _  
     adStatus As ADODB.EventStatusEnum, _  
     ByVal pCommand As ADODB.Command, _  
     ByVal pRecordset As ADODB.Recordset, _  
     ByVal pConnection As ADODB.Connection)  

Error 개체를 제외하고 동일한 매개 변수가 Will 이벤트에 전달됩니다. 이렇게 하면 보류 중인 작업에 사용할 각 개체를 검사하고 작업을 완료할 수 있는지 여부를 결정할 수 있습니다.

일부 이벤트 처리기에는 이벤트가 발생한 이유에 대한 추가 정보를 제공하는 Reason 매개 변수가 있습니다. 예를 들어 WillMoveMoveComplete 이벤트는 호출되는 탐색 메서드(MoveNext, MovePrevious 등) 중 하나 또는 다시 쿼리의 결과로 발생할 수 있습니다.

Status 매개 변수

이벤트 처리기 루틴이 호출되면 Status 매개 변수가 다음 값 중 하나로 설정됩니다.

설명
adStatusOK Will 및 Complete 이벤트 모두에 전달됩니다. 이 값은 이벤트를 발생시킨 작업이 성공적으로 완료되었음을 의미합니다.
adStatusErrorsOccurred Complete 이벤트에만 전달됩니다. 이 값은 이벤트를 발생시킨 작업이 실패했거나 Will 이벤트가 작업을 취소했음을 의미합니다. 자세한 내용은 Error 매개 변수를 확인하세요.
adStatusCantDeny Will 이벤트에만 전달됩니다. 이 값은 Will 이벤트에서 작업을 취소할 수 없음을 의미합니다. 수행해야 합니다.

Will 이벤트에서 작업을 계속해야 한다고 결정한 경우 Status 매개 변수는 변경되지 않은 상태로 둡니다. 그러나 들어오는 상태 매개 변수가 adStatusCantDeny로 설정되지 않은 한 StatusadStatusCancel로 변경하여 보류 중인 작업을 취소할 수 있습니다. 이렇게 하면 작업과 연결된 Complete 이벤트에 해당 Status 매개 변수가 adStatusErrorsOccurred로 설정됩니다. Complete 이벤트에 전달된 Error 개체에는 adErrOperationCancelled 값이 포함됩니다.

이벤트를 더 이상 처리하지 않으려면 StatusadStatusUnwantedEvent로 설정할 수 있으며 애플리케이션은 더 이상 해당 이벤트에 대한 알림을 받지 못합니다. 그러나 여러 가지 이유로 일부 이벤트가 발생할 수 있습니다. 이 경우 가능한 각 이유에 대해 adStatusUnwantedEvent를 지정해야 합니다. 예를 들어 보류 중인 RecordChange 이벤트의 알림 수신을 중지하려면 Status 매개 변수를 adRsnAddNew에 대해 adStatusUnwantedEvent, adRsnDelete, adRsnUpdate, adRsnUndoUpdate, adRsnUndoAddNew, adRsnUndoDelete, adRsnFirstChange로 설정해야 합니다.

설명
adStatusUnwantedEvent 이 이벤트 처리기가 더 이상 알림을 받지 않도록 요청합니다.
adStatusCancel 발생하려는 작업의 취소를 요청합니다.

Error 매개 변수

Error 매개 변수는 ADO Error 개체에 대한 참조입니다. Status 매개 변수가 adStatusErrorsOccurred로 설정된 경우 Error 개체에는 작업이 실패한 이유에 대한 세부 정보가 포함됩니다. Complete 이벤트와 연결된 Will 이벤트가 Status 매개 변수를 adStatusCancel로 설정하여 작업을 취소한 경우 오류 개체는 항상 adErrOperationCancelled로 설정됩니다.

Object 매개 변수

각 이벤트는 작업에 관련된 개체를 나타내는 하나 이상의 개체를 받습니다. 예를 들어 ExecuteComplete 이벤트는 Command 개체, Recordset 개체, Connection 개체를 받습니다.

Reason 매개 변수

Reason 매개 변수인 adReason은 이벤트가 발생한 이유에 대한 추가 정보를 제공합니다. adReason 매개 변수가 있는 이벤트는 매번 다른 이유로 동일한 작업에 대해서도 여러 번 호출될 수 있습니다. 예를 들어 레코드의 삽입, 삭제 또는 수정을 수행하거나 실행 취소하려는 작업에 대해 WillChangeRecord 이벤트 처리기가 호출됩니다. 특정 이유로 이벤트가 발생하는 경우에만 이벤트를 처리하려는 경우 adReason 매개 변수를 사용하여 관심 없는 항목을 필터링할 수 있습니다. 예를 들어 레코드 변경 이벤트가 레코드가 추가되었기 때문에 발생하는 경우에만 처리하려는 경우 다음과 같은 항목을 사용할 수 있습니다.

' BeginEventExampleVB01  
Private Sub rsTest_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)  
   If adReason = adRsnAddNew Then  
       ' Process event  
       '...  
   Else  
       ' Cancel event notification for all  
       ' other possible adReason values.  
       adStatus = adStatusUnwantedEvent  
   End If  
End Sub  
' EndEventExampleVB01  

이 경우 다른 이유로 인해 알림이 발생할 수 있습니다. 그러나 각 이유로 한 번만 발생합니다. 각 이유로 알림이 한 번 발생한 후에는 새 레코드 추가에 대한 알림만 받게 됩니다.

반대로 adReason 매개 변수가 없는 이벤트 처리기가 이벤트 알림 수신을 중지하도록 요청하려면 adStatusadStatusUnwantedEvent로 한 번만 설정해야 합니다.

참고 항목

ADO 이벤트 처리기 요약
언어별 ADO 이벤트 인스턴스화
이벤트 처리기가 함께 작동하는 방법
이벤트 유형