asp内置对象ObjectContext详解
您可以使用ObjectContext对象提交或放弃一项由MicrosoftTransactionServer(MTS)管理的事务,它由ASP页包含的脚本初始化。
ASP包含@TRANSACTION指令时,该页会在事务中运行,直到事务成功或失败后才会终止。
语法
ObjectContext.method
方法
SetCompleteSetComplete方法声明脚本不了解事务未完成的原因。如果事务中的所有组件都调用SetComplete,事务将完成。
SetAbortSetAbort方法声明被脚本初始化的事务未完成,无法更新源。
事件
OnTransactionCommit
OnTransactionAbort
注释
ObjectContext实现MTSObjectContext对象的两种方法。SetAbort方法完全终止事务。这样,MTS不更新在第一阶段联系的源。事务终止时,将处理脚本的OnTransactionAbort事件。
调用SetComplete方法并不一定意味着事务已完成。只有脚本调用的所有事务组件都调用了SetComplete,事务才能完成。在大多数实例中,如果结束处理时未调用SetAbort,脚本通常被假定为完成的,所以不一定要在脚本内调用SetComplete。
ObjectContext展示了SetAbort和SetComplete以外的六种方法。这些方法可用于脚本调用的组件,但不能直接用于ASP脚本。
示例
这里示范使用SetAbort和SetCommit的方法。Sales.htm文件获取处理销售请求所需的数据。第二个文件——SalesVerify.asp中的脚本使用两个对象——Inventory和Sales处理销售。如果Inventory返回了错误代码表示供销售的存货不足,就会调用SetAbort。如果Inventory对象没有返回错误代码,将会调用SetComplete处理销售请求。
Sales.htm
<!DOCTYPEHTMLPUBLIC"-//IETF//DTDHTML//EN">
<HTML>
<HEAD>
<TITLE>SalesOrder</TITLE>
</HEAD>
<BODYBGCOLOR="#FFFFFF"><FONTFACE="ARIAL,HELVETICA">
<H2>SalesOrderForm</H2>
<FORMMETHOD=POSTACTION="SalesVerify.asp">
<P>Pleaseentertheproductcode,quantity,andyouraccountnumber.
<INPUTTYPE=TEXTNAME=QuantityToBuy>
<INPUTTYPE=TEXTNAME=ProductCode>
<INPUTTYPE=TEXTNAME=AccountIn>
<P>
<INPUTTYPE=SUBMIT>
</FONT>
</BODY>
</HTML>
SalesVerify.asp文件
<%@Transaction=Required%>
<%
SetCurrentQOH=Server.CreateObject("Mycomp.Inventory")
SetCurrentSales=Server.CreateObject("Mycomp.Sales")
CheckQuantity=Request("QuantityToBuy")
CheckProduct=Request("ProductCode")
QuantityStatus=CurrentQOH.CheckQOH(CheckQuantity,CheckProduct)
IfQuantityStatus=None
ObjectContext.SetAbort
Response.Write"Sorry,thereisnotsufficientquantityonhandtoprocessyoursale."
Else
ObjectContext.SetComplete
Account=Request("AccountIn")
Saleupdate=CurrentSales.PostIt(AccountIn)
EndIf
%>