Sdílet prostřednictvím


ADOAdapter2.BuildSQLFromXMLNodes-Methode

Gibt ein SQL-Befehlstextfragment zurück, das den angegebenen XML-Knoten verwendet.

Namespace: Microsoft.Office.Interop.InfoPath
Assembly: Microsoft.Office.Interop.InfoPath (in microsoft.office.interop.infopath.dll)

Syntax

'Declaration
<DispIdAttribute(8)> _
Function BuildSQLFromXMLNodes ( _
    <InAttribute> pXmlNode As IXMLDOMNode _
) As String
'Usage
Dim instance As ADOAdapter2
Dim pXmlNode As IXMLDOMNode
Dim returnValue As String

returnValue = instance.BuildSQLFromXMLNodes(pXmlNode)
[DispIdAttribute(8)] 
string BuildSQLFromXMLNodes (
    [InAttribute] IXMLDOMNode pXmlNode
)

Parameter

  • pXmlNode
    Der XML-Knoten, der in ein SQL-Fragment konvertiert werden soll.

Rückgabewert

Ein SQL-Befehlstextfragment.

Hinweise

Das SQL-Fragment, das von der BuildSQLFromXMLNodes-Methode geniert wird, ist eine SQL- WHERE-Klausel im Format Feld = Wert. Der XML-Knoten, den Sie für das pXmlNode-Argument verwenden, sollte ein untergeordnetes Element des dfs:queryFields-Knotens sein. Sobald das SQL-Befehlstextfragment generiert wurde, können Sie es mithilfe des ADOAdapterObject-Objekts unter Verwendung der Command-Eigenschaft hinzufügen.

Beispiel

Im folgenden Beispiel wird die BuildSQLFromXMLNodes-Methode verwendet, um die Tabelle "Orders" der Datenbank "Northwind" abzufragen. Die zurückgegebenen Daten werden nach Elementen gefiltert, die größer oder gleich dem Wert von queryFieldNode sind.

private void QueryGreaterThan()
{    
 string oldCommand;
 string whereClause;
 IXMLDOMNode queryFieldNode;
 IXMLDOMNode curQueryFieldAttribute;
 IXMLDOMNamedNodeMap queryFieldAttributes;
 ADOAdapter adapter = (ADOAdapter)thisXDocument.QueryAdapter;

 // Build the WHERE clause from the QueryFields in the form's
 // underlying XML DOM.
 queryFieldNode = thisXDocument.DOM.selectSingleNode("dfs:myFields/dfs:queryFields/q:Orders");
 whereClause = adapter.BuildSQLFromXMLNodes(queryFieldNode);

// The QueryFields are empty.
 if (whereClause == null)
 {
  whereClause = String.Empty;
 }
 // Replace the '=' signs with '>=', and append the clause to 
 // the SQL command text.
 whereClause = whereClause.Replace(@"=", @">=");
 oldCommand = adapter.Command;
 
 if (whereClause != "")
 {
  adapter.Command = oldCommand + " where " + whereClause;
 }
 
 // Clear the QueryFields so the WHERE clause isn't 
 // automatically generated.
 queryFieldAttributes = queryFieldNode.attributes;
 while ((curQueryFieldAttribute = queryFieldAttributes.nextNode()) != null)
 {
  curQueryFieldAttribute.text = "";
 }

  // Perform the query.
 try
 {
  thisXDocument.Query();
 }
 catch (Exception ex)
 {
  thisXDocument.UI.Alert("Failed to query.\n\n" + ex.Message);
 }

 // Reset the command so that subsequent queries are based on 
 // the correct SQL command text string.
 adapter.Command = oldCommand;
}

Siehe auch

Referenz

ADOAdapter2-Schnittstelle
ADOAdapter2-Member
Microsoft.Office.Interop.InfoPath-Namespace