イベント パラメーター
すべてのイベント ハンドラーには、イベント ハンドラーを制御する状態パラメーターがあります。 Complete イベントの場合、このパラメーターは、イベントを生成した操作の成功または失敗を示すためにも使用されます。 また、ほとんどの完了イベントには、発生した可能性のあるエラーに関する情報を提供するエラー パラメーターと、操作の実行に使用される ADO オブジェクトを参照する 1 つ以上のオブジェクト パラメーターがあります。 たとえば、ExecuteComplete イベントには、コマンド、Recordset、およびイベントに関連付けられている Connection オブジェクトのオブジェクト パラメーターが含まれます。 次の Visual Basic の例では、コマンド、Recordset、および Execute メソッドで使用される 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 パラメーターがあり、イベントが発生した理由に関する追加情報が提供されます。 たとえば、WillMove および MoveComplete イベントは、ナビゲーション メソッド (MoveNext、MovePreviousなど) が呼び出されたり、再クエリの結果として発生したりする可能性があります。
Status パラメーター
イベント ハンドラー ルーチンが呼び出されると、Status パラメーターは次のいずれかの値に設定されます。
価値 | 説明 |
---|---|
adStatusOK が で正常です | WillイベントとCompleteイベントの両方に渡されます。 この値は、イベントの原因となった操作が正常に完了したことを意味します。 |
adStatusErrorsOccurred で が発生しました | Complete イベントにのみ渡されます。 この値は、イベントの原因となった操作が失敗したか、Will イベントが操作を取り消したことを意味します。 詳細については、Error パラメーターを確認してください。 |
広告ステータス「adStatusCantDeny」 | Will イベントにのみ渡されます。 この値は、Will イベントで操作を取り消すことができないことを意味します。 実行する必要があります。 |
Will イベントで操作を続行する必要があると判断した場合は、Status パラメーターはそのままにします。 ただし、受信状態パラメーターが adStatusCantDeny に設定されていない限り、Status を adStatusCancel に変更することで、保留中の操作を取り消すことができます。 これを行うと、操作に関連付けられている Complete イベントの Status パラメーターが adStatusErrorsOccurredに設定されます。 Complete イベントに渡される Error オブジェクトには、adErrOperationCancelled値が含まれます。
イベントを処理しなくなった場合は、状態 を adStatusUnwantedEvent に設定すると、アプリケーションはそのイベントの通知を受信しなくなります。 ただし、一部のイベントは複数の理由で発生する可能性があることに注意してください。 その場合、考えられる理由ごとに adStatusUnwantedEvent を指定する必要があります。 たとえば、RecordChange イベント 保留中の通知の受信を停止するには、 adRsnAddNew、adRsnDelete、adRsnUpdateの adStatusUnwantedEvent をStatus パラメーターを設定する必要があります adRsnUndoUpdate、adRsnUndoAddNew、adRsnUndoDelete、および adRsnFirstChange を します。
価値 | 説明 |
---|---|
adStatusUnwantedEvent を する | このイベント ハンドラーがそれ以上の通知を受け取らないことを要求します。 |
adStatusCancel | 発生しようとしている操作の取り消しを要求します。 |
エラー パラメーター
Error パラメーターは、ADO Error オブジェクトへの参照です。 Status パラメーターが adStatusErrorsOccurred に設定されている場合、Error オブジェクトには、操作が失敗した理由の詳細が含まれます。 Complete イベントに関連付けられた Will イベントが、Status パラメーターを adStatusCancel 設定して操作を取り消した場合、エラー オブジェクトは常に adErrOperationCancelled に設定されます。
オブジェクト パラメーター
各イベントは、操作に関係するオブジェクトを表す 1 つ以上のオブジェクトを受け取ります。 たとえば、ExecuteComplete イベントは、Command オブジェクト、Recordset オブジェクト、および Connection オブジェクトを受け取ります。
理由パラメーター
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
この場合、通知は他の各理由で発生する可能性があります。 ただし、各理由で 1 回だけ発生します。 通知は、理由ごとに 1 回発生した後、新しいレコードの追加についてのみ通知を受け取ります。
これに対して、イベント ハンドラーが adReason パラメーターなしでイベント通知の受信を停止するようにするには、adStatus を adStatusUnwantedEvent として1回だけ設定する必要があります。
関連項目
ADO イベント ハンドラーの概要
ADO イベントのインスタンス化 言語 による
イベント ハンドラーがどのように連携するか
イベントの種類