Freigeben über


Ereignisparameter

Gilt für: Access 2013, Office 2013

Every event handler has a status parameter that controls the event handler. For Complete events, this parameter is also used to indicate the success or failure of the operation that generated the event. Most Complete events also have an error parameter to provide information about any error that might have occurred, as well as one or more object parameters that refer to the ADO objects used to perform the operation. For example, the ExecuteComplete event includes object parameters for the Command, Recordset, and Connection objects associated with the event. In the following Microsoft Visual Basic example, you can see the pCommand, pRecordset and pConnection objects which represent the Command, Recordset, and Connection objects used by the Execute method.

 
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) 

Except for the Error object, the same parameters are passed to the Will events. This gives you the opportunity to examine each of the objects to be used in the pending operation and determine whether the operation should be allowed to complete.

Einige Ereignishandler verfügen über einen Reason-Parameter , der zusätzliche Informationen darüber bereitstellt, warum das Ereignis aufgetreten ist. Beispielsweise können die Ereignisse WillMove und MoveComplete auftreten, wenn eine der Navigationsmethoden (MoveNext, MovePrevious usw.) oder als Ergebnis einer erneuten Abfrage aufgerufen wird.

Status-Parameter

Wenn die Ereignishandlerroutine aufgerufen wird, wird der Status-Parameter auf einen der folgenden Werte festgelegt.

Wert

Beschreibung

adStatusOK

Wird den Ereignissen Will und Complete übergeben. Dieser Wert bedeutet, dass die Operation, durch die das Ereignis verursacht wurde, erfolgreich abgeschlossen wurde.

adStatusErrorsOccurred

Wird nur an Complete-Ereignisse übergeben. Dieser Wert bedeutet, dass der Vorgang, der das Ereignis verursacht hat, nicht erfolgreich war oder dass der Vorgang durch ein Will-Ereignis abgebrochen wurde. Überprüfen Sie den Parameter Error , um weitere Details zu erhalten.

adStatusCantDeny

Wird nur Will-Ereignissen übergeben. Dieser Wert bedeutet, dass die Operation vom Will-Ereignis nicht 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 eingehende status Parameter nicht auf adStatusCantDeny festgelegt wurde, können Sie den ausstehenden Vorgang jedoch abbrechen, indem Sie Status in adStatusCancel ändern. Wenn Sie dies tun, ist der Status-Parameter für das dem Vorgang zugeordnete Complete-Ereignis auf adStatusErrorsOccurred festgelegt. Das an das Complete-Ereignis übergebene Error-Objekt enthält den Wert adErrOperationCancelled.

Wenn ein Ereignis nicht mehr verarbeitet werden soll, können Sie Status auf adStatusUnwantedEvent festlegen, und die Anwendung empfängt keine Benachrichtigungen mehr für dieses Ereignis. Manche Ereignisse können jedoch aus mehreren Gründen ausgelöst werden. In diesem Fall müssen Sie adStatusUnwantedEvent für jeden möglichen Grund angeben. Zum Beenden des Empfangs von Benachrichtigungen zu ausstehenden RecordChange-Ereignissen z. B. müssen Sie den Status-Parameter für die auftretenden Ereignisse adRsnAddNew, adRsnDelete, adRsnUpdate, adRsnUndoUpdate, adRsnUndoAddNew, adRsnUndoDelete und adRsnFirstChange auf adStatusUnwantedEvent festlegen.

Wert

Beschreibung

adStatusUnwantedEvent

Es wird angefordert, dass dieser Ereignishandler keine weiteren Benachrichtigungen empfängt.

adStatusCancel

Es wird angefordert, dass die Operation, die gerade auftreten soll, abgebrochen wird.

Error-Parameter

Der Error-Parameter ist ein Verweis auf ein ADO Error-Objekt . Wenn der Status-Parameter auf adStatusErrorsOccurred festgelegt ist, enthält das Error-Objekt Details dazu, warum der Vorgang fehlgeschlagen ist. Wenn das einem Complete-Ereignis zugeordnete Will-Ereignis den Vorgang durch Festlegen des Status-Parameters auf adStatusCancel abgebrochen hat, wird das Fehlerobjekt immer auf adErrOperationCancelled festgelegt.

Object-Parameter

Jedes Ereignis empfängt eines oder mehrere Objekte, die die Objekte darstellen, die an der Operation beteiligt sind. Beispielsweise empfängt das ExecuteComplete-Ereignis ein Command-Objekt, ein Recordset-Objekt und ein Connection-Objekt.

Reason-Parameter

Der Reason-ParameteradReason bietet zusätzliche Informationen darüber, warum das Ereignis aufgetreten ist. Ereignisse mit einem adReason-Parameter können mehrmals aufgerufen werden, auch für denselben Vorgang, jedes Mal aus einem anderen Grund. Der WillChangeRecord-Ereignishandler wird beispielsweise 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, an denen Sie nicht interessiert sind. Wenn Sie beispielsweise Datensatzänderungsereignisse nur verarbeiten möchten, wenn sie auftreten, weil ein Datensatz hinzugefügt wurde, können Sie etwa wie folgt vorgehen:

 
' 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 die Benachrichtigung potenziell aus jedem der anderen Gründe auftreten. Sie tritt jedoch nur ein Mal für jeden Grund auf. Wenn die Benachrichtigung für jeden Grund ein Mal aufgetreten ist, empfangen Sie nur Benachrichtigungen für die Hinzufügung eines neuen Datensatzes.

Dagegen müssen Sie adStatus nur ein Mal auf adStatusUnwantedEvent festlegen, um anzufordern, dass ein Ereignishandler ohne adReason-Parameter keine Benachrichtigungen mehr empfängt.