Freigeben über


AdoQueryConnection.BuildSqlFromXmlNodes-Methode

Gibt ein SQL-Befehltextfragment zurück, das vom angegebenen XML-Knoten, das die Abfragefeldwerte enthält, analysiert wurde.

Namespace:  Microsoft.Office.InfoPath
Assembly:  Microsoft.Office.InfoPath (in Microsoft.Office.InfoPath.dll)

Syntax

'Declaration
Public MustOverride Function BuildSqlFromXmlNodes ( _
    input As XPathNavigator _
) As String
'Usage
Dim instance As AdoQueryConnection
Dim input As XPathNavigator
Dim returnValue As String

returnValue = instance.BuildSqlFromXmlNodes(input)
public abstract string BuildSqlFromXmlNodes(
    XPathNavigator input
)

Parameter

Rückgabewert

Typ: System.String
Eine aus den Abfragefeldwerten im angegebenen Knoten erstellte WHERE-Klausel.

Ausnahmen

Ausnahme Bedingung
InvalidOperationException

Eine der folgenden Situationen ist eingetreten:

  • Die vom Eingabeknoten generierte SQL-Befehlszeichenfolge kann nicht analysiert werden.

  • Der Eingabeknoten ist keine Tabelle mit Abfragefeldwerten.

  • Der Eingabeknoten enthält Spalten (XML-Attribute), die in der abgefragten Datenquelle nicht vorhandenen sind.

ArgumentNullException

Der an diese Methode übergebene Parameter lautet ein Nullverweis (Nothing in Visual Basic).

ArgumentException

Der an diese Methode übergebene Parameter ist nicht gültig. Der Parameter weist beispielsweise den falschen Typ oder das falsche Format auf.

Hinweise

Das SQL-Fragment, das die BuildSQLFromXmlNodes-Methode generiert, ist eine SQL WHERE-Klausel in Form von Paaren, bestehend aus Feldname = Wert. Sind mehrere Paare vorhanden, wird jedes Paar mit dem UND-Operator kombiniert. Wenn der Benutzer beispielsweise eine Abfrage für die Employee-Tabelle der Northwind-Datenbank ausführt und dabei in den Abfragefeldern Davolio und Nancy für die Nachname- und Vorname-Felder eingibt, lautet das von der BuildSQLFromXmlNode-Methode zurückgegebene SQL-Fragment wie folgt:

("Employees"."LastName"='Davolio' AND "Employees"."FirstName"='Nancy')

Der für den input-Parameter angegebene XML-Knoten muss im Formular ein untergeordnetes Element des dfs:queryFields-Knotens sein. Sie können mithilfe der Command-Eigenschaft das SQL-Befehlstextfragment einer vorhandenen SQL-Befehlszeichenfolge des ADOQueryConnection-Objekts hinzufügen.

Hinweis

Zeigen Sie den Aufgabenbereich Datenquelle an, erweitern Sie die Gruppe queryFields, klicken Sie mit der rechten Maustaste auf die Tabelle, die die gewünschten Abfragefelder enthält, und klicken Sie dann auf XPath kopieren, um den XPath-Ausdruck für die Tabelle zu bestimmen, die die an den input-Parameter zu übergebenden Abfragefelder enthält.

Auf den Member kann nur über Formulare zugegriffen werden, die in derselben Domäne wie das zurzeit geöffnete Formular ausgeführt werden, oder über Formulare, denen domänenübergreifende Berechtigungen erteilt wurden.

Auf diesen Typ oder diesen Member kann über Code zugegriffen werden, der in Formularen ausgeführt wird, die mit Microsoft InfoPath Filler oder einem Webbrowser geöffnet wurden.

Beispiele

Im folgenden Beispiel verwendet der Ereignishandler für ein Steuerelement Button die BuildSQLFromXMLNodes-Methode der ADOQueryConnection-Klasse, um die aktuellen Abfragefeldwerte zu analysieren und diese in einem Meldungsfeld anzuzeigen.

Bei diesem Beispiel wird davon ausgegangen, dass die Formularvorlage in der Employee-Tabelle der Northwind-Beispieldatenbank von SQL Server über die Datenverbindung "Primäre Verbindung" verfügt.

public void DisplaySQL_Clicked(object sender, ClickedEventArgs e)
{
   // Get the query fields node.
   string queryFieldsXPath = 
      "dfs:myFields/dfs:queryFields/q:Employees";
   XPathNavigator mainDataSourceNav = MainDataSource.CreateNavigator();
   XPathNavigator queryFieldsNav = mainDataSourceNav.SelectSingleNode(
      queryFieldsXPath, NamespaceManager);

   // Create AdoQueryConnection from the 
   // DataConnections collection.
   AdoQueryConnection myAdoQueryConnection = 
      (AdoQueryConnection)(DataConnections["Main connection"]);
   
   // Display BuildSQLFromXMLNodes output.
   string sqlFromXmlNodes = 
      myAdoQueryConnection.BuildSqlFromXmlNodes(queryFieldsNav);
   MessageBox.Show(sqlFromXmlNodes);
}
Public Sub DisplaySQL_Clicked(ByVal sender As Object, _
   ByVal e As ClickedEventArgs)
   ' Get the query fields node.
   Dim queryFieldsXPath As String = 
      "dfs:myFields/dfs:queryFields/q:Employees"
   Dim mainDataSourceNav As XPathNavigator  = _
      MainDataSource.CreateNavigator()
   Dim queryFieldsNav As XPathNavigator = _
      mainDataSourceNav.SelectSingleNode( _
      queryFieldsXPath, NamespaceManager)

   ' Create AdoQueryConnection from the 
   ' DataConnections collection.
   Dim myAdoQueryConnection As AdoQueryConnection  = _
      DirectCast(DataConnections["Main connection"], _
      AdoQueryConnection)
   
   ' Display BuildSQLFromXMLNodes output.
   Dim sqlFromXmlNodes As String  = 
      myAdoQueryConnection.BuildSqlFromXmlNodes(queryFieldsNav)
   MessageBox.Show(sqlFromXmlNodes)
End Sub

Siehe auch

Referenz

AdoQueryConnection Klasse

AdoQueryConnection-Member

Microsoft.Office.InfoPath-Namespace