Compartir a través de


Utilizar un diagrama de actualización en una aplicación ASP de ejemplo (SQLXML 4.0)

Esta aplicación ASP (Páginas Active Server) le permite actualizar la información del cliente en la tabla Person.Person de la base de datos de ejemplo AdventureWorks2008R2 de Microsoft SQL Server. La aplicación hace lo siguiente:

  • Solicita al usuario que escriba un identificador de entidad de negocio.

  • Usa el valor de este identificador para ejecutar una plantilla a fin de recuperar la información de contacto de la tabla Person.Person.

  • Muestra esta información usando un formulario HTML.

A continuación, el usuario puede actualizar la información de contacto, pero no el identificador de entidad de negocio (puesto que BusinessEntityID es la clave principal). Después de que el usuario envía la información, se ejecuta un diagrama de actualización y todos los parámetros del formulario se pasan al diagrama de actualización.

La siguiente plantilla es la primera plantilla (GetPerson.xml). Guarde esta plantilla en el directorio asociado al nombre virtual del tipo 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>

La siguiente plantilla es la segunda plantilla (UpdatePerson.xml). Guarde esta plantilla en el directorio asociado al nombre virtual del tipo 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>

El siguiente código es la aplicación ASP (SampleASP.asp). Guárdelo en el directorio asociado a una raíz virtual que cree con la utilidad Administrador de servicios Internet. (Esta raíz virtual no debe crearse con la utilidad Administración de directorios virtuales de IIS para SQL Server porque Administración de directorios virtuales de IIS para SQL Server no puede obtener acceso a aplicaciones ASP ni identificarlas.)

Nota

En el código, debe reemplazar "ServerName" por el nombre del servidor que ejecuta 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>