此頁(yè)沒有內(nèi)容條目
內(nèi)容

每個(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ì)信息。

狀態(tài)參數(shù)

當(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ù)

錯(cuò)誤參數(shù)是對(duì) ADO Error 對(duì)象的引用。狀態(tài)參數(shù)為 adStatusErrorsOccurred 時(shí),該對(duì)象包含操作失敗的詳細(xì)信息。

對(duì)象參數(shù)

對(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

...