Condividi tramite


Utilizzo di un updategram in un'applicazione ASP di esempio (SQLXML 4.0)

Questa applicazione ASP (Active Server Pages) consente di aggiornare le informazioni sul cliente nella tabella Person.Contact nel database di esempio AdventureWorks in Microsoft SQL Server. L'applicazione effettua quanto segue:

  • Chiede all'utente di immettere un ID del contatto.

  • Utilizza il ID del cliente specificato per eseguire un modello per recuperare informazioni di contatto dalla tabella Person.Contact.

  • Visualizza le informazioni ottenute tramite un form HTML.

L'utente può quindi aggiornare le informazioni di contatto ma non l'ID (poiché ContactID è la chiave primaria). Dopo che l'utente invia le informazioni, viene eseguito un updategram e tutti i parametri del form vengono passati all'updategram.

Di seguito viene presentato il primo modello (GetContact.xml). Salvare questo modello nella directory associata al nome virtuale del tipo template.

<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
   <sql:header>
      <sql:param name="cid"></sql:param>
   </sql:header>
   <sql:query>
      SELECT  * 
      FROM    Person.Contact
      WHERE   ContactID=@cid 
      FOR XML AUTO
   </sql:query>
</root>

Di seguito viene presentato il secondo modello (UpdateContact.xml). Salvare questo modello nella directory associata al nome virtuale del tipo template.

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:header>
   <updg:param name="cid"/>
   <updg:param name="title" />
   <updg:param name="firstname" />
   <updg:param name="lastname" />
   <updg:param name="emailaddress" />
   <updg:param name="phone" />
</updg:header>
<updg:sync >
   <updg:before>
      <Person.Contact ContactID="$cid" /> 
   </updg:before>
   <updg:after>
      <Person.Contact ContactID="$cid" 
       Title="$title"
       FirstName="$firstname"
       LastName="$lastname"
       EmailAddress="$emailaddress"
       Phone="$phone"/>
   </updg:after>
</updg:sync>
</ROOT>

Il codice seguente è l'applicazione ASP (SampleASP.asp). Salvarlo nella directory associata a una radice virtuale che è possibile creare mediante l'utilità Gestione Internet Services. La radice virtuale non viene creata tramite l'utilità Gestione directory virtuale IIS per SQL Server in quanto questa utilità non può accedere alle applicazioni ASP o identificarle.

[!NOTA]

Nel codice è necessario sostituire "ServerName" con il nome del server che esegue Microsoft Internet Information Services (IIS).

<% LANGUAGE=VBSCRIPT %>
<%
  Dim ContactID
  ContactID=Request.Form("cid")
%>
<html>
<body>
<%
  'If a ContactID value is not yet provided, display this form.
  if ContactID="" then
%>
<!-- If the ContactID has not been specified, display the form that allows users to enter an ID. -->
<form action="AdventureWorksContacts.asp" method="POST">
<br>
Enter ContactID: <input type=text name="cid"><br>
<input type=submit value="Submit this ID" ><br><br>
<-- Otherwise, if a ContactID is entered, display the second part of the form where the user can change customer information. -->
<%
  else
%>
<form name="Contacts" action="https://localhost/AdventureWorks/Template/UpdateContact.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/AdventureWorks/Template/GetContact.xml?cid=" & ContactID)
    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 "Contact ID: <input type=text readonly=true style='background-color:silver' name=cid value="""
  Response.Write objCustomer.attributes(0).value
  Response.Write """><br><br>"


  Response.Write "Title: <input type=text name=title 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>"

  Response.Write "Email Address: <input type=text name=emailaddress value="""
  Response.Write objCustomer.attributes(4).value
  Response.Write """><br><br>"

  Response.Write "Phone: <input type=text name=phone value="""
  Response.Write objCustomer.attributes(9).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="<%=ContactID%>"><br><br>
<% end if %>

</form>
</body>
</html>