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