每個事件處理程序都有一個控制它的狀態(tài)參數(shù)。大部分 Complete 事件都有錯誤參數(shù)用于報告引起事件發(fā)生的操作是否成功。另外還有一個對象參數(shù),用于標識操作所針對的 ADO 對象。
參數(shù)同時被傳遞到 Will 事件以便用于掛起操作。這樣您就有機會檢查參數(shù)并確定操作是否應(yīng)該完成。
某些事件處理程序有原因參數(shù),該參數(shù)可以提供有關(guān)事件發(fā)生原因的詳細信息。
當事件處理程序例程被調(diào)用時,狀態(tài)參數(shù)將被設(shè)置為下列信息值之一。
值 |
說明 |
adStatusOK |
引發(fā)事件的操作已成功發(fā)生。 |
adStatusErrorsOccurred |
引發(fā)事件的操作未成功發(fā)生,或 Will 事件取消了操作。有關(guān)細節(jié),請單擊錯誤參數(shù)。 |
adStatusCantDeny |
Will 事件無法請求取消即將開始的操作。 |
在事件處理程序例程返回之前,應(yīng)當保持狀態(tài)參數(shù)不變,或?qū)⑵湓O(shè)置為下列請求值之一。
值 |
說明 |
adStatusUnwantedEvent |
請求該事件處理程序不接收以后的通知。 |
adStatusCancel |
請求取消即將開始的操作。 |
由事件類型所決定,當事件處理程序被調(diào)用時,狀態(tài)參數(shù)可以取下列值之一。
事件類型 |
值 |
Will |
adStatusOK, adStatusCantDeny |
Complete |
adStatusOK, adStatusErrorsOccurred |
取決于事件類型,在事件處理程序返回時,狀態(tài)參數(shù)可以取下列值之一。
事件類型 |
值 |
Will |
adStatusOK, adStatusCancel, adStatusUnwantedEvent |
Complete |
adStatusOK, adStatusUnwantedEvent |
錯誤參數(shù)是對 ADO Error 對象的引用。狀態(tài)參數(shù)為 adStatusErrorsOccurred 時,該對象包含操作失敗的詳細信息。
對象參數(shù)是對所操作的 ADO 對象的引用。例如,可以同時打開幾個 Connection 對象,但一次只能打開一個 Disconnect 事件處理程序。如果所有連接關(guān)閉,將對象參數(shù)設(shè)置為關(guān)閉的 Connection 對象,即可調(diào)用 Disconnect 事件處理程序。
原因參數(shù)
原因參數(shù)(adReason)提供有關(guān)事件發(fā)生原因的附加信息。帶有 adReason 參數(shù)的方法可以被多次調(diào)用 — 甚至被相同的操作調(diào)用,但每次調(diào)用都有不同原因。
例如,WillChangeRecord 事件處理程序被某些操作調(diào)用,這些操作將進行或撤消記錄的插入、刪除或修改。adReason 參數(shù)被作為只處理特殊事件的篩選器來使用。
必須在 adStatus 參數(shù)中返回 adStatusUnwantedEvent,要求不帶 adReason 參數(shù)的事件處理程序停止接收事件通知。但是,帶有 adReason 參數(shù)的事件處理程序可能會接收幾個通知,每個通知有不同原因。所以,對每個不同原因產(chǎn)生的通知,必須返回 adStatusUnwantedEvent。
例如,假設(shè) WillChangeRecord 事件處理程序是用 Microsoft? Visual Basic? 編寫的。如果您以后不想接收任何進一步的通知,只需編寫如下代碼:
Set adStatus = adStatusUnwantedEvent
但是,如果要處理其行將被刪除的事件,但取消所有其他原因所帶來的通知時,請編寫如下程序:
if (adReason = adRsnDelete)
'處理此原因引起的事件。
...
else
'停止接收任何其他原因引起的事件。
Set adStatus = adStatusUnwantedEvent
...