サンプル ASP アプリケーションでのアップデートグラムの使用 (SQLXML 4.0)
この ASP (Active Server Pages) アプリケーションでは、Microsoft SQL Server の AdventureWorks2008R2 サンプル データベースにある Person.Person テーブル内の顧客情報を更新できます。このアプリケーションによって次の処理が行われます。
ユーザーに、ビジネス エンティティ ID を入力するように指示する。
入力された ID 値を使用してテンプレートを実行し、Person.Person テーブルから連絡先に関する情報を取得する。
取得した情報を HTML 形式で表示する。
この後、ユーザーは連絡先に関する情報を更新できますが、BusinessEntityID が主キーであるためビジネス エンティティ ID は更新できません。ユーザーが情報を送信すると、アップデートグラムが実行され、すべての form パラメーターがアップデートグラムに渡されます。
次のテンプレートは、最初のテンプレート (GetPerson.xml) です。このテンプレートを、template 型の仮想名が関連付けられているディレクトリに保存します。
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:header>
<sql:param name="bid"></sql:param>
</sql:header>
<sql:query>
SELECT *
FROM Person.Person
WHERE BusinessEntityID=@bid
FOR XML AUTO
</sql:query>
</root>
次のテンプレートは、2 番目のテンプレート (UpdatePerson.xml) です。このテンプレートを、template 型の仮想名が関連付けられているディレクトリに保存します。
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:header>
<updg:param name="bid"/>
<updg:param name="jobtitle" />
<updg:param name="firstname" />
<updg:param name="lastname" />
</updg:header>
<updg:sync >
<updg:before>
<Person.Person BusinessEntityID="$bid" />
</updg:before>
<updg:after>
<Person.Person BusinessEntityID="$bid"
JobTitle="$jobtitle"
FirstName="$firstname"
LastName="$lastname"/>
</updg:after>
</updg:sync>
</ROOT>
次のコードは、ASP アプリケーション (SampleASP.asp) です。このコードを、仮想ルートが関連付けられているディレクトリに保存します。仮想ルートはインターネット サービス マネージャー ユーティリティを使って作成します。SQL Server 用の IIS 仮想ディレクトリ管理ユーティリティは使用しません。SQL Server 用の IIS 仮想ディレクトリ管理ユーティリティでは、ASP アプリケーションにアクセスしたり、このアプリケーションを識別したりできません。
注 |
|---|
コードでは、"ServerName" に Microsoft インターネット インフォメーション サービス (IIS) を実行するサーバーの名前を指定する必要があります。 |
<% LANGUAGE=VBSCRIPT %>
<%
Dim BusinessEntityID
BusinessEntityID=Request.Form("bid")
%>
<html>
<body>
<%
'If a BusinessEntityID value is not yet provided, display this form.
if BusinessEntityID="" then
%>
<!-- If the BusinessEntityID has not been specified, display the form that allows users to enter an ID. -->
<form action="AdventureWorksPeople.asp" method="POST">
<br>
Enter BusinessEntityID: <input type=text name="bid"><br>
<input type=submit value="Submit this ID" ><br><br>
<-- Otherwise, if a BusinessEntityID is entered, display the second part of the form where the user can change customer information. -->
<%
else
%>
<form name="People" action="https://localhost/AdventureWorks2008R2/Template/UpdatePerson.xml" method="POST">
You may update customer information below.<br><br>
<!-- A comment goes here to separate the parts of the application or page. -->
<br>
<%
' Load the document in the parser and extract the values to populate the form.
Set objXML=Server.CreateObject("MSXML2.DomDocument")
ObjXML.setProperty "ServerHTTPRequest", TRUE
objXML.async=False
objXML.Load("https://localhost/AdventureWorks2008R2/Template/GetPerson.xml?bid=" & BusinessEntityID)
set objCustomer=objXML.documentElement.childNodes.Item(0)
' In retrieving data from the database, if a value in the column is NULL there
' is no attribute for the corresponding element. In this case,
' skip the error generation and go to the next attribute.
On Error Resume Next
Response.Write "Business Entity ID: <input type=text readonly=true style='background-color:silver' name=bid value="""
Response.Write objCustomer.attributes(0).value
Response.Write """><br><br>"
Response.Write "Job Title: <input type=text name=jobtitle value="""
Response.Write objCustomer.attributes(1).value
Response.Write """><br><br>"
Response.Write "First Name: <input type=text name=firstname value="""
Response.Write objCustomer.attributes(2).value
Response.Write """><br>"
Response.Write "Last Name: <input type=text name=lastname value="""
Response.Write objCustomer.attributes(3).value
Response.Write """><br><br>"
set objCustomer=Nothing
Set objXML=Nothing
%>
<input type="submit" value="Submit this change" ><br><br>
<input type=hidden name="contenttype" value="text/xml">
<input type=hidden name="eeid" value="<%=BusinessEntityID%>"><br><br>
<% end if %>
</form>
</body>
</html>
注