BuildSQLFromXMLNodes-metoden

Microsoft Office InfoPath

Returnerer en streng som inneholder et SQL-kommandotekstfragment som bruker den angitte XML-noden.

expression.BuildSQLFromXMLNodes(ByRef pXmlNode As IXMLDOMNode) As String

expression    Obligatorisk. Et uttrykk som returnerer en referanse til ADOAdapter-objektet.

pXmlNode Obligatorisk Object. XML-noden som skal konverteres til et SQL-fragment.

returns    String.

Sikkerhetsnivå

2: Kan åpnes bare av skjemaer som kjører på samme domene som skjemaet som i øyeblikket er åpent, eller av skjemaer som har fått tillatelser på tvers av domener.

Merknader

SQL-fragmentet som genereres av BuildSQLFromXMLNodes-metoden, er en SQL WHERE-setningsdel i formatet field = value. XML-noden som du bruker for pXmlNode-argumentet, bør være en etterkommer av dfs:queryFields-noden. Når du har SQL-kommandotekstfragmentet, kan du legge det til i den eksisterende SQL-kommandostrengen for ADOAdapter-objektet ved hjelp av Command-egenskapen.

Eksempel

I eksemplet nedenfor brukes BuildSQLFromXMLNodes-metoden for ADOAdapter-objektet til å opprette et SQL-kommandotekstfragment basert på en angitt XML-node. Dette eksemplet er basert på et skjema som bruker Orders-tabellen (Ordrer) i eksempeldatabasen Northwind (Gastronor) i Microsoft SQL Server.

function QueryGreaterThan()
{
   var objQueryFieldNode;
   var strWhereClause;
   var strOldCommand;
   var objQueryFieldAttributes;
   var objCurQueryFieldAttribute;

   // Build the WHERE clause from the QueryFields in the form's
   // underlying XML DOM.
   objQueryFieldNode = XDocument.DOM
      .selectSingleNode("dfs:myFields/dfs:queryFields/q:Orders");
   strWhereClause = XDocument.QueryAdapter
      .BuildSQLFromXMLNodes(objQueryFieldNode);

   // Replace the '=' signs with '>=', and append the clause to 
   // the SQL command text.
   strWhereClause = strWhereClause.replace(/=/, ">=");
   strOldCommand = XDocument.QueryAdapter.Command;
	
   if (strWhereClause != "")
   {
      XDocument.QueryAdapter.Command = strOldCommand + 
         " where " + strWhereClause;
   }
	
   // Clear the QueryFields so the WHERE clause isn't 
   // automatically generated.
   objQueryFieldAttributes = objQueryFieldNode.attributes;
   while (objCurQueryFieldAttribute = objQueryFieldAttributes.nextNode())
   {
      objCurQueryFieldAttribute.text = "";
   }
	
   // Perform the query.
   try
   {
      XDocument.Query();
   }
   catch (e)
   {
      XDocument.UI.Alert("Failed to query.\n\n" + e.message);
   }
	
   // Reset the command so that subsequent queries are based on 
   // the correct SQL command text string.
   XDocument.QueryAdapter.Command = strOldCommand;

   // Clean up.
   objQueryFieldNode = null;
   strWhereClause = null;
   strOldCommand = null;
   objQueryFieldAttributes = null;
   objCurQueryFieldAttribute = null;

}