Utilisation d'un code de mise à jour (updategram) dans un exemple d'application ASP (SQLXML 4.0)
Cette application ASP (Active Server Pages) vous permet de mettre à jour les informations client dans la table Person.Person de l'exemple de base de données AdventureWorks2008R2 dans Microsoft SQL Server. L'application effectue les actions suivantes :
Elle invite l'utilisateur à entrer un ID d'entité commerciale.
Elle utilise cette valeur d'ID pour exécuter un modèle afin de récupérer des informations de contact de la table Person.Person.
Elle affiche ces informations en utilisant un formulaire HTML.
L'utilisateur peut alors mettre à jour les informations de contact mais pas l'ID d'entité commerciale (car BusinessEntityID est la clé primaire). Après que l'utilisateur a soumis les informations, un code de mise à jour (updategram) est exécuté et tous les paramètres du formulaire sont passés au code de mise à jour.
Le modèle suivant est le premier modèle (GetPerson.xml). Enregistrez ce modèle dans le répertoire associé au nom virtuel de type 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>
Le modèle suivant est le deuxième modèle (UpdatePerson.xml). Enregistrez ce modèle dans le répertoire associé au nom virtuel de type 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>
Le code suivant est l'application ASP (SampleASP.asp). Enregistrez-le dans le répertoire associé à une racine virtuelle que vous créez à l'aide de l'utilitaire Gestionnaire des services Internet. (Cette racine virtuelle n'est pas créée à l'aide d'IIS Virtual Directory Management pour l'utilitaire SQL Server car IIS Virtual Directory Management pour SQL Server ne peut pas identifier ou accéder à des applications ASP.)
Notes
Dans le code, vous devez remplacer le « ServerName » par le nom du serveur exécutant les services Internet (Microsoft Internet Information Services (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>