다음을 통해 공유


이벤트 매개 변수

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

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

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

더 이상 이벤트를 처리하지 않으려면 상태 adStatusUnwantedEvent 설정할 수 있으며 애플리케이션은 더 이상 해당 이벤트에 대한 알림을 받지 않습니다. 하지만 일부 이벤트는 여러 가지 이유로 발생할 수 있다는 점을 기억하세요. 이 경우 가능한 각각의 이유에 대해 adStatusUnwantedEvent을 지정해야 합니다. 예를 들어, 보류 중인 RecordChange 이벤트에 대한 알림 수신을 중지하려면, Status 매개 변수를 adStatusUnwantedEvent로 설정해야 합니다. 이는 adRsnAddNew, adRsnDelete, adRsnUpdate, adRsnUndoUpdate, adRsnUndoAddNew, adRsnUndoDeleteadRsnFirstChange가 발생할 때 적용됩니다.

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

오류 매개 변수

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

개체 매개 변수

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

Reason 매개 변수

adReason Reason 매개 변수는 이벤트가 발생한 이유에 대한 추가 정보를 제공합니다. 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  

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

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

참고 항목

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