Partager via


AdoQueryConnection.BuildSqlFromXmlNodes - Méthode

Renvoie un fragment de texte de commande SQL analysé à partir du nœud XML spécifié, contenant les valeurs des champs de requête.

Espace de noms :  Microsoft.Office.InfoPath
Assembly :  Microsoft.Office.InfoPath (dans Microsoft.Office.InfoPath.dll)

Syntaxe

'Déclaration
Public MustOverride Function BuildSqlFromXmlNodes ( _
    input As XPathNavigator _
) As String
'Utilisation
Dim instance As AdoQueryConnection
Dim input As XPathNavigator
Dim returnValue As String

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

Paramètres

Valeur renvoyée

Type : System.String
Clause WHERE générée à partir des valeurs des champs de requête du nœud spécifié.

Exceptions

Exception Condition
InvalidOperationException

L'une des conditions suivantes s'est produite :

  • La chaîne de commande SQL générée à partir du nœud d'entrée ne peut pas être analysée.

  • Le nœud d'entrée n'est pas une table de valeurs de champs de requête.

  • Le nœud d'entrée contient des colonnes (attributs XML) qui ne figurent pas dans la source de données interrogée.

ArgumentNullException

Le paramètre passé à cette méthode est une référence Null (Rien dans Visual Basic).

ArgumentException

Le paramètre passé à cette méthode n’est pas valide. Par exemple, le type ou le format est incorrect.

Remarques

Le fragment de texte SQL généré par la méthode BuildSQLFromXmlNodes est une clause SQL WHERE se présentant sous la forme de paires nomchamp = valeur. S'il existe plusieurs paires, chaque paire est combinée avec un opérateur AND. Si, par exemple, l'utilisateur interroge la table Employees de la base de données Northwind en indiquant Davolio et Nancy dans les champs de la requête portant sur les champs Last Name et First Name, le fragment de texte SQL renvoyé par la méthode BuildSQLFromXmlNode ressemble à ce qui suit :

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

Le nœud XML spécifié pour le paramètre input doit être un descendant du nœud dfs:queryFields du formulaire. Vous pouvez ajouter le fragment de texte de commande SQL à la chaîne de commande SQL existante de l'objet ADOQueryConnection à l'aide de la propriété Command.

Notes

Pour déterminer l'expression XPath de la table contenant les valeurs de champs de requête à passer en tant que paramètre input, affichez le volet Office Source de données, développez le groupe queryFields, cliquez avec le bouton droit sur la table qui contient les champs de requête à manipuler puis cliquez sur Copy XPath.

Seuls les formulaires qui s’exécutent dans le même domaine que le formulaire actuellement ouvert ou les formulaires disposant d’autorisations inter-domaines peuvent accéder à ce membre.

Vous pouvez accéder à ce type ou à ce membre à partir du code exécuté dans les formulaires ouverts dans Microsoft InfoPath Filler ou dans un navigateur web.

Exemples

Dans l'exemple suivant, le gestionnaire d'événements d'un contrôle Button fait appel à la méthode BuildSQLFromXMLNodes de la classe ADOQueryConnection pour analyser les valeurs des champs de requête actuelles et les afficher dans un message.

Cet exemple suppose que le modèle de formulaire possède une connexion de données appelée « Main connection » à la table Employees de l'exemple de base de données SQL Server Northwind.

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

Voir aussi

Référence

AdoQueryConnection classe

AdoQueryConnection - Membres

Microsoft.Office.InfoPath - Espace de noms