Partager via


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>