每个事件处理程序都有一个控制它的状态参数。大部分 Complete 事件都有错误参数用于报告引起事件发生的操作是否成功。另外还有一个对象参数,用于标识操作所针对的 ADO 对象。
参数同时被传递到 Will 事件以便用于挂起操作。这样您就有机会检查参数并确定操作是否应该完成。
某些事件处理程序有原因参数,该参数可以提供有关事件发生原因的详细信息。
当事件处理程序例程被调用时,状态参数将被设置为下列信息值之一。
值 |
说明 |
adStatusOK |
引发事件的操作已成功发生。 |
adStatusErrorsOccurred |
引发事件的操作未成功发生,或 Will 事件取消了操作。有关细节,请单击错误参数。 |
adStatusCantDeny |
Will 事件无法请求取消即将开始的操作。 |
在事件处理程序例程返回之前,应当保持状态参数不变,或将其设置为下列请求值之一。
值 |
说明 |
adStatusUnwantedEvent |
请求该事件处理程序不接收以后的通知。 |
adStatusCancel |
请求取消即将开始的操作。 |
由事件类型所决定,当事件处理程序被调用时,状态参数可以取下列值之一。
事件类型 |
值 |
Will |
adStatusOK, adStatusCantDeny |
Complete |
adStatusOK, adStatusErrorsOccurred |
取决于事件类型,在事件处理程序返回时,状态参数可以取下列值之一。
事件类型 |
值 |
Will |
adStatusOK, adStatusCancel, adStatusUnwantedEvent |
Complete |
adStatusOK, adStatusUnwantedEvent |
错误参数是对 ADO Error 对象的引用。状态参数为 adStatusErrorsOccurred 时,该对象包含操作失败的详细信息。
对象参数是对所操作的 ADO 对象的引用。例如,可以同时打开几个 Connection 对象,但一次只能打开一个 Disconnect 事件处理程序。如果所有连接关闭,将对象参数设置为关闭的 Connection 对象,即可调用 Disconnect 事件处理程序。
原因参数
原因参数(adReason)提供有关事件发生原因的附加信息。带有 adReason 参数的方法可以被多次调用 — 甚至被相同的操作调用,但每次调用都有不同原因。
例如,WillChangeRecord 事件处理程序被某些操作调用,这些操作将进行或撤消记录的插入、删除或修改。adReason 参数被作为只处理特殊事件的筛选器来使用。
必须在 adStatus 参数中返回 adStatusUnwantedEvent,要求不带 adReason 参数的事件处理程序停止接收事件通知。但是,带有 adReason 参数的事件处理程序可能会接收几个通知,每个通知有不同原因。所以,对每个不同原因产生的通知,必须返回 adStatusUnwantedEvent。
例如,假设 WillChangeRecord 事件处理程序是用 Microsoft® Visual Basic® 编写的。如果您以后不想接收任何进一步的通知,只需编写如下代码:
Set adStatus = adStatusUnwantedEvent
但是,如果要处理其行将被删除的事件,但取消所有其他原因所带来的通知时,请编写如下程序:
if (adReason = adRsnDelete)
'处理此原因引起的事件。
...
else
'停止接收任何其他原因引起的事件。
Set adStatus = adStatusUnwantedEvent
...