關(guān)于ASP內(nèi)置對(duì)象ObjectContext的詳細(xì)說(shuō)明
這篇文章給大家分享學(xué)習(xí)的是關(guān)于ASP內(nèi)置對(duì)象ObjectContext詳解,希望對(duì)初學(xué)ASP的朋友們能夠帶來(lái)幫助。
您可以使用 ObjectContext 對(duì)象提交或放棄一項(xiàng)由 Microsoft Transaction Server (MTS) 管理的事務(wù),它由 ASP 頁(yè)包含的腳本初始化。
ASP 包含 @TRANSACTION 指令時(shí),該頁(yè)會(huì)在事務(wù)中運(yùn)行,直到事務(wù)成功或失敗后才會(huì)終止。
語(yǔ)法
ObjectContext.method
方法
SetComplete SetComplete 方法聲明腳本不了解事務(wù)未完成的原因。如果事務(wù)中的所有組件都調(diào)用 SetComplete,事務(wù)將完成。
SetAbort SetAbort 方法聲明被腳本初始化的事務(wù)未完成,無(wú)法更新源。
事件
OnTransactionCommit
OnTransactionAbort
注釋
ObjectContext 實(shí)現(xiàn) MTS ObjectContext 對(duì)象的兩種方法。 SetAbort 方法完全終止事務(wù)。這樣,MTS 不更新在第一階段聯(lián)系的源。事務(wù)終止時(shí),將處理腳本的 OnTransactionAbort 事件。
調(diào)用 SetComplete 方法并不一定意味著事務(wù)已完成。只有腳本調(diào)用的所有事務(wù)組件都調(diào)用了 SetComplete,事務(wù)才能完成。在大多數(shù)實(shí)例中,如果結(jié)束處理時(shí)未調(diào)用 SetAbort,腳本通常被假定為完成的,所以不一定要在腳本內(nèi)調(diào)用 SetComplete。
ObjectContext 展示了 SetAbort 和 SetComplete 以外的六種方法。這些方法可用于腳本調(diào)用的組件,但不能直接用于 ASP 腳本。
示例
這里示范使用 SetAbort 和 SetCommit 的方法。Sales.htm 文件獲取處理銷售請(qǐng)求所需的數(shù)據(jù)。第二個(gè)文件——SalesVerify.asp 中的腳本使用兩個(gè)對(duì)象——Inventory 和 Sales 處理銷售。如果 Inventory 返回了錯(cuò)誤代碼表示供銷售的存貨不足,就會(huì)調(diào)用 SetAbort。如果 Inventory 對(duì)象沒(méi)有返回錯(cuò)誤代碼,將會(huì)調(diào)用 SetComplete 處理銷售請(qǐng)求。
Sales.htm
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<TITLE>Sales Order</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<FONT FACE="ARIAL,HELVETICA">
<H2>Sales Order Form </H2>
<FORM METHOD=POST ACTION="SalesVerify.asp">
<P>Please enter the product code, quantity, and your account number.
<INPUT TYPE=TEXT NAME=QuantityToBuy>
<INPUT TYPE=TEXT NAME=ProductCode>
<INPUT TYPE=TEXT NAME=AccountIn>
<P>
<INPUT TYPE=SUBMIT>
</FONT>
</BODY>
</HTML>
SalesVerify.asp 文件
<%@ Transaction = Required %>
<%
Set CurrentQOH = Server.CreateObject("Mycomp.Inventory")
Set CurrentSales = Server.CreateObject("Mycomp.Sales")
CheckQuantity = Request("QuantityToBuy")
CheckProduct = Request("ProductCode")
QuantityStatus = CurrentQOH.CheckQOH(CheckQuantity,CheckProduct)
If QuantityStatus = None
ObjectContext.SetAbort
Response.Write "Sorry, there is not sufficient quantity on hand to process your sale."
Else
ObjectContext.SetComplete
Account = Request("AccountIn")
Saleupdate = CurrentSales.PostIt(AccountIn)
End If
%>