Ereignisparameter
Jeder Ereignishandler verfügt über einen Statusparameter, der den Ereignishandler steuert. Bei Complete-Ereignissen wird dieser Parameter auch verwendet, um den Erfolg oder Fehler des Vorgangs anzugeben, der das Ereignis generiert hat. Die meisten Complete-Ereignisse verfügen auch über einen Fehlerparameter, um Informationen zu jedem aufgetretenen Fehler bereitzustellen, und einen oder mehrere Objektparameter, die auf die ADO-Objekte verweisen, die zum Ausführen des Vorgangs verwendet werden. Beispielsweise enthält das ExecuteComplete--Ereignis Objektparameter für das Command, Recordsetund Connection Objekte, die dem Ereignis zugeordnet sind. Im folgenden Visual Basic-Beispiel werden die pCommand-, pRecordset- und pConnection-Objekte angezeigt, die die objekte Command, Recordsetund Connection Objekte darstellen, die von der Execute-Methode verwendet werden.
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)
Mit Ausnahme des Error-Objekts werden dieselben Parameter an die Will-Ereignisse übergeben. Auf diese Weise können Sie jedes der Objekte untersuchen, die im ausstehenden Vorgang verwendet werden, und bestimmen, ob der Vorgang abgeschlossen werden darf.
Einige Ereignishandler verfügen über einen Reason-Parameter, der zusätzliche Informationen dazu bereitstellt, warum das Ereignis aufgetreten ist. Beispielsweise können die WillMove- und MoveComplete- Ereignisse aufgrund einer der Navigationsmethoden (MoveNext, MovePrevioususw.) auftreten, wenn diese aufgerufen werden, oder als Ergebnis einer erneuten Abfrage.
Statusparameter
Wenn die Ereignishandlerroutine aufgerufen wird, wird der Status Parameter auf einen der folgenden Werte festgelegt.
Wert | Beschreibung |
---|---|
-adStatusOK- | Wird sowohl an Will- als auch an Complete-Events übergeben. Dieser Wert bedeutet, dass der Vorgang, der dazu führte, dass das Ereignis erfolgreich abgeschlossen wurde. |
AnzeigenstatusFehlerAufgetreten | Wird nur an "Complete"-Ereignisse übergeben. Dieser Wert bedeutet, dass der Vorgang, der das Ereignis verursacht hat, entweder nicht erfolgreich war oder durch ein Will-Ereignis abgebrochen wurde. Weitere Informationen finden Sie im Parameter Error. |
AnzeigenStatusKannNichtVerweigertWerden | Nur bei Will-Ereignissen übergeben. Dieser Wert bedeutet, dass der Vorgang nicht vom Will-Ereignis abgebrochen werden kann. Sie muss ausgeführt werden. |
Wenn Sie in Ihrem Will-Ereignis feststellen, dass der Vorgang fortgesetzt werden soll, lassen Sie den Status Parameter unverändert. Solange der Parameter für den eingehenden Status nicht auf adStatusCantDenyfestgelegt wurde, können Sie den ausstehenden Vorgang jedoch abbrechen, indem Sie Status in adStatusCanceländern. Wenn Sie dies tun, hat das dem Vorgang zugeordnete Complete-Ereignis seinen Status Parameter auf adStatusErrorsOccurredfestgelegt. Das Error-Objekt, das an das Complete-Ereignis übergeben wird, enthält den Wert adErrOperationCancelled.
Wenn Sie ein Ereignis nicht mehr verarbeiten möchten, können Sie Status- auf adStatusUnwantedEvent- festlegen, und Ihre Anwendung empfängt keine Benachrichtigung mehr über dieses Ereignis. Denken Sie jedoch daran, dass einige Ereignisse aus mehr als einem Grund ausgelöst werden können. In diesem Fall müssen Sie adStatusUnwantedEvent für jede mögliche Ursache angeben. Um zum Beispiel den Empfang von Benachrichtigungen über ausstehende RecordChange--Ereignisse zu beenden, müssen Sie den Parameter Status auf adStatusUnwantedEvent für adRsnAddNew, adRsnDelete, adRsnUpdate, adRsnUndoUpdate, adRsnUndoAddNew, adRsnUndoDeleteund adRsnFirstChange setzen.
Wert | Beschreibung |
---|---|
adStatusUnwantedEvent | Fordern Sie an, dass dieser Ereignishandler keine weiteren Benachrichtigungen empfängt. |
adStatusCancel | Anfordern des Abbruchs des Vorgangs, der ausgeführt werden soll. |
Fehlerparameter
Der parameter Error ist ein Verweis auf ein ADO-Error-Objekt. Wenn der parameter Status auf adStatusErrorsOccurredfestgelegt ist, enthält das Error-Objekt Details dazu, warum der Vorgang fehlgeschlagen ist. Wenn das will-Ereignis, das einem Complete-Ereignis zugeordnet ist, den Vorgang abgebrochen hat, indem der Parameter Status auf adStatusCancelfestgelegt ist, wird das Fehlerobjekt immer auf adErrOperationCancelledfestgelegt.
Objektparameter
Jedes Ereignis empfängt ein oder mehrere Objekte, die die Objekte darstellen, die an dem Vorgang beteiligt sind. Beispielsweise empfängt das ExecuteComplete--Ereignis ein Command-Objekt, ein Recordset--Objekt und ein Connection-Objekt.
Grundparameter
Der parameter Reason, adReason, enthält zusätzliche Informationen dazu, warum das Ereignis aufgetreten ist. Ereignisse mit einem adReason Parameter können mehrmals aufgerufen werden, auch für denselben Vorgang, aus einem anderen Grund jedes Mal. Beispielsweise wird der WillChangeRecord-Ereignishandler für Vorgänge aufgerufen, die das Einfügen, Löschen oder Ändern eines Datensatzes ausführen oder rückgängig machen. Wenn Sie ein Ereignis nur verarbeiten möchten, wenn es aus einem bestimmten Grund auftritt, können Sie den adReason Parameter verwenden, um die Vorkommen herauszufiltern, die Sie nicht interessieren. Wenn Sie z. B. Datensatzänderungsereignisse nur verarbeiten möchten, wenn sie auftreten, weil ein Datensatz hinzugefügt wurde, können Sie etwa folgendes verwenden.
' 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
In diesem Fall kann möglicherweise eine Benachrichtigung aus jedem der anderen Gründe erfolgen. Es tritt jedoch nur einmal aus jedem Grund auf. Nachdem Sie eine Benachrichtigung aus jedem einzelnen Grund erhalten haben, werden Sie nur noch benachrichtigt, wenn ein neuer Datensatz hinzugefügt wird.
Im Gegensatz dazu müssen Sie adStatus- auf adStatusUnwantedEvent nur einmal festlegen, um anzufordern, dass ein Ereignishandler ohne adReason Parameter den Empfang von Ereignisbenachrichtigungen beendet.
Siehe auch
ADO-Ereignishandler-Zusammenfassung
Instanziierung von ADO-Ereignissen nach Sprache
Zusammenarbeit von Ereignishandlern
Ereignistypen