Partager via


Procédure d'accès à des sources de données externes

Lorsque vous travaillez avec un modèle de formulaire InfoPath, vous pouvez écrire du code pour accéder aux sources de données secondaires du formulaire et manipuler les données qu'elles contiennent.

Chaque source de données secondaire est représentée par un objet instancié à l'aide de la classe DataSource et correspond à des données stockées, obtenues à partir d'une source de données externe, par exemple une base de données ou une requête d'un service Web. Ces sources de données sont désignées comme sources secondaires car lorsque l'utilisateur enregistre un formulaire InfoPath, il enregistre uniquement les données de la source de données principale et non les données des sources de données secondaires. La connexion à une source de données est représentée par un objet instancié à l'aide d'une des classes de « connexion de données » telles que la classe WebServiceConnection, qui représente une connexion de données à un service Web XML.

L'objet instancié DataSource représente le stockage de données XML renvoyées par une connexion de données (à partir d'une requête de base de données ou de service Web), et la classe de « connexion de données » représente la connexion de données elle-même (telle que définie et nommée au moyen de la commande Connexions de données dans le menu Outils).

Le modèle objet d'InfoPath prend en charge l'accès aux sources de données secondaires d'un formulaire grâce à l'utilisation de la classe DataSource en association avec la classe DataSourceCollection.

Le modèle objet d'InfoPath fournit également un ensemble de classes de connexion de données contenant des informations relatives aux connexions de données utilisées par le formulaire.

Remarque

Dans Microsoft InfoPath 2003, une connexion de données est appelée adaptateur de données.

Il existe deux types de connexions de données : les connexions de requête permettent de récupérer les données qui sont ensuite stockées dans une source de données secondaire. Les connexions d'envoi sont utilisées pour envoyer des données, par exemple à une base de données ou à un site Web. Les données envoyées sont copiées depuis la source de données principale ou la source de données secondaire.

Présentation de la classe DataSourceCollection

La classe DataSourceCollection fournit aux développeurs les méthodes et propriétés suivantes pour gérer les instances d'objets DataSource que contient le formulaire.

Nom Description

Propriété Count

Renvoie le nombre d'instances DataSourceObject que contient la collection.

Méthode GetEnumerator

Renvoie un IEnumerator qui peut être utilisé pour lancer une répétition dans la collection.

Propriété Item

Renvoie une référence à l'objet DataSource spécifié par valeur d'index.

Propriété Item

Renvoie une référence à l'objet DataSource spécifié par nom d'index.

Présentation de la classe DataSource

La classe DataSource offre aux développeurs de formulaires les méthodes et les propriétés ci-dessous pour interagir avec une source de données secondaire InfoPath.

Nom Description

Méthode CreateNavigator

Renvoie un objet XPathNavigator pour accéder à la source de données et la modifier.

Propriété QueryConnection

Obtient une référence à l'objet de connexion de données associé.

Pour exécuter la requête sur la connexion de données et insérer les données renvoyées sous forme de code XML dans le nœud XML associé à l'objet DataSource, utilisez la méthode Execute de l'objet de connexion de données associé.

Propriété Name

Obtient le nom de l'objet DataSource.

Propriété ReadOnly

Obtient une valeur qui indique si la source de données est en lecture seule.

Méthode GetNamedNodeProperty

Obtient la valeur d'une propriété nommée pour le nœud XML spécifié, lequel doit être un nœud nonattribute dans la source de données principale.

Méthode SetNamedNodeProperty

Définit la valeur d'une propriété nommée pour le nœud XML spécifié, lequel doit être un nœud nonattribute dans la source de données principale.

Présentation des classes de connexion de données

Les classes conçues pour accéder aux connexions de données fournissent plusieurs propriétés et méthodes permettant d'échanger des données via des connexions avec des sources de données externes. La connexion de données associée à un objet DataSource dépend du type de connexion de données externe. InfoPath implémente les classes suivantes pour accéder aux connexions de données :

Nom Description

Classe AdoQueryConnection

Interroge une source de données ADO/OLEDB ; limité à Microsoft Access et Microsoft SQL Server.

Classe AdoSubmitConnection

Envoie à une source de données ADO/OLEDB ; limité à Microsoft Access et Microsoft SQL Server.

Classe SharepointListQueryConnection

Interroge une liste ou une bibliothèque de documents SharePoint.

Classe WebServiceConnection

Établit une connexion à un service Web XML.

Classe FileQueryConnection

Interroge un fichier XML.

FileSubmitConnection

Envoie à un fichier XML.

EmailSubmitConnection

Envoie un formulaire sous forme de pièce jointe dans un courrier électronique.

Utilisation des classes DataSourceCollection et DataSource

L'objet DataSourceCollection qui représente la collection de sources de données associées à un modèle de formulaire est accessible par le biais de la propriété DataSources de la classe XmlForm. Si, par exemple, vous créez une source de données secondaire nommée Employés qui extrait des données de la table Employees dans la base de données Les comptoirs, vous pouvez utiliser l'objet DataSourceCollection pour définir une référence à un objet DataSource qui représente les données extraites.

Dans l'exemple de code suivant, le nom de la source de données secondaires est transmis à la propriété d'accès de la classe DataSourceCollection, qui renvoie une référence à l'objet DataSource qui représente les données extraites de la table Employés. Le nœud XML qui stocke les données extraites à partir de la source de données secondaire s'affiche dans une zone de message au moyen de la méthode CreateNavigator de la classe DataSource pour accéder à la propriété InnerXml de la classe XPathNavigator.

// Instantiate a variable to access the specified data source
// from the DataSourceCollection of the form.
DataSource myDataSource = 
   this.DataSources["Employees"];

// Display the XML data from the secondary data source.
MessageBox.Show("Data source data: " +
   myDataSource.CreateNavigator().InnerXml.ToString());
' Instantiate a variable to access the specified data source
' from the DataSourceCollection of the form.
Dim myDataSource As DataSource = _
   Me.DataSources("Employees")

' Display the XML data from the secondary data source.
MessageBox.Show("Data source data: " & _
   myDataSource.CreateNavigator().InnerXml.ToString())

Pour manipuler les données figurant dans une source de données secondaire, utilisez la méthode CreateNavigator de la classe DataSource pour renvoyer une référence à un objet XPathNavigator positionné au niveau du nœud où sont stockées les données secondaires. Vous pouvez utiliser les propriétés et méthodes de la classe XPathNavigator pour manipuler les données. Pour plus d'informations, voir Utilisation des classes XPathNavigator et XPathNodeIterator.

Utilisation des classes DataConnectionCollection et DataConnection

L'objet DataConnectionCollection qui représente la collection de connexions de données associées à un modèle de formulaire est accessible par le biais de la propriété DataConnections de la classe XmlForm. Si, par exemple, vous créez une source de données secondaire nommée Employés qui extrait les données de la table Employés dans la base de données Les comptoirs, vous pouvez utiliser l'objet DataConnectionCollection associé au modèle de formulaire pour définir une référence à DataConnection qui représente la connexion à la base de données.

Dans l'exemple de code qui suit, le nom de la source de données secondaire est transmis à la propriété d'accès de la classe DataConnectionCollection, qui, dans ce cas, renvoie une référence à l'objet ADOQueryConnection qui représente la connexion à la base de données Les comptoirs. Pour que cet exemple fonctionne correctement, vous devez forcer la conversion de façon explicite de l'objet renvoyé au type ADOQueryConnection. La propriété Connection de l'interface ADOAdapterObject permet d'afficher la chaîne de connexion ADO dans une boîte de message.

// Instantiate a variable to access the specified data connection
// from the DataConnectionCollection of the form. 
// You must cast to the specific data connection type
// (ADOQueryConnection) before you can access the data connection.
ADOQueryConnection myADOConnection = 
   (ADOQueryConnection)this.DataConnections["Employees"];

// Display the connection information for the data connection.
MessageBox.Show("Connection string: " + myADOConnection.Connection);
' Instantiate a variable to access the specified data connection
' from the DataConnectionCollection of the form. 
' You must cast to the specific data connection type
' (ADOQueryConnection) before you can access the data connection.
Dim myADOConnection As ADOQueryConnection = _
   DirectCast(Me.DataConnections("Employees"), ADOQueryConnection)

' Display the connection information for the data connection.
MessageBox.Show("Connection string: " & myADOConnection.Connection)

Voir aussi

Concepts

Création de modèles de formulaire InfoPath fonctionnant avec Forms Services