Procédure d'accès à des sources de données externes en utilisant le modèle objet InfoPath 2003
Lorsque vous travaillez à partir d'un modèle de formulaire InfoPath qui utilise le modèle objet compatible avec InfoPath 2003, 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 l'interface DataSourceObject et correspond à des données stockées, obtenues 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 le 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 interfaces d'« adaptateur de données » telles que l'interface WebServiceAdapterObject qui représente une connexion de données à un service Web XML.
L'objet instancié DataSourceObject représente les données XML renvoyées par une connexion de données (à une base de données ou une requête de service Web) et l'adaptateur de données représente la connexion de données.
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 l'interface DataSourceObject en association avec l'interface DataObjectsCollection.
Le modèle objet d'InfoPath fournit également un ensemble d'objets adaptateur de données contenant des informations relatives aux connexions de données utilisées par le formulaire.
Il existe deux types d'adaptateurs de données : les adaptateurs de requête et les adaptateurs d'envoi. Les adaptateurs de requête permettent de récupérer les données qui sont ensuite stockées dans une source de données secondaire, tandis que les adaptateurs d'envoi sont utilisés pour envoyer des données, par exemple à une base de données ou un service Web. Les données envoyées sont copiées depuis la source de données principale ou la source de données secondaire.
Vue d'ensemble de l'interface DataObjectsCollection
L'interface DataObjectsCollection fournit aux développeurs les méthodes et propriétés suivantes pour gérer les instances DataSourceObject 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'instance DataSourceObject spécifiée. |
Vue d'ensemble de l'interface DataSourceObject
L'interface DataSourceObject 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 Query |
Exécute la requête sur un adaptateur de données et insère les données renvoyées sous forme de XML dans le DOM XML associé à l'objet DataSourceObject. |
Propriété DOM |
Renvoie une référence au DOM XML utilisé pour enregistrer et manipuler les données à l'aide de l'objet DataSourceObject. |
Propriété Name |
Renvoie une valeur chaîne indiquant le nom de l'objet DataSourceObject. |
Propriété QueryAdapter |
Renvoie une référence à l'adaptateur de données associé. |
Vue d'ensemble des interfaces d'adaptateurs de données
Les interfaces conçues pour accéder aux adaptateurs 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. L'adaptateur de données associé à un objet DataSourceObject dépend du type de connexion de données externe. InfoPath implémente les interfaces suivantes pour accéder aux adaptateurs de données :
Nom | Description |
---|---|
Interface ADOAdapterObject |
Établit une connexion avec les sources de données ADO/OLEDB ; limité aux bases Microsoft Access et Microsoft SQL Server™. |
Interface SharepointListAdapterObject |
Se connecte à une liste ou une bibliothèque de documents SharePoint. |
Interface WebServiceAdapterObject |
Établit une connexion avec des services Web XML. |
Objet XMLFileAdapterObject |
Établit une connexion avec un fichier XML. |
Utilisation des interfaces DataSourceObjects et DataSourceObject
La collection DataSourceObjects est accessible via la propriété DataObjects de l'interface XDocument. Par exemple, si vous créez une source de données secondaire appelée Employés qui récupère les données de la table Employés dans la base de données Access Les Comptoirs, vous pouvez utiliser la collection DataSourceObjects pour définir une référence à un objet DataObject qui représente les données récupéré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 l'interface DataObjectsCollection, qui renvoie une référence à l'objet DataSourceObject. Les données de la source de données secondaire sont affichées dans une boîte de message par le biais de la propriété DOM de l'interface DataSourceObject pour accéder à la propriété xml du DOM XML.
public void CTRL1_5_OnClick(DocActionEvent e)
{
// Instantiate a variable to access the specified data object
// from the DataObjectsCollection of the form.
// You must explicitly cast to the DataSourceObject type
// before you can access the data object.
DataSourceObject myDataObject =
thisXDocument.DataObjects["Employees"] as DataSourceObject;
// Display the data from the secondary data source using the
// XML DOM.
thisXDocument.UI.Alert("Data Adapter: " + myDataObject.DOM.xml);
}
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)
' Instantiate a variable to access the specified data object
' from the DataObjectsCollection of the form.
Dim myDataObject As DataSourceObject = _
thisXDocument.DataObjects("Employees")
' Display the data from the secondary data source using the
' XML DOM.
thisXDocument.UI.Alert("Data Adapter: " + myDataObject.DOM.xml)
End Sub
Pour manipuler les données d'une source secondaire, utilisez la propriété DOM de l'interface DataSourceObject qui renvoie une référence au DOM XML contenant les données. Dès que vous disposez de cette référence, vous pouvez utiliser l'ensemble de ses propriétés et de ses méthodes pour manipuler les données que contient le DOM XML.
Utilisation des interfaces DataAdaptersCollection et DataAdapterObject
L'interface DataAdaptersCollection est accessible via la propriété DataAdapters de l'interface XDocument. Par exemple, si vous créez une source de données secondaire appelée Employés qui récupère les données de la table Employés dans la base de données Access Les Comptoirs, vous pouvez utiliser la collection DataAdapterObjects pour définir une référence à un objet DataAdapterObject 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 l'interface DataAdaptersCollection, qui, dans ce cas, renvoie une référence à une instance de l'objet ADOAdapterObject. Pour que cet exemple fonctionne correctement, vous devez envoyer de façon explicite l'objet renvoyé en tant qu'objet ADOAdapterObject, qui représente la connexion à la base de données Microsoft Access Les Comptoirs. La propriété Connection de l'interface ADOAdapterObject permet d'afficher la chaîne de connexion ADO dans une boîte de message.
public void CTRL1_5_OnClick(DocActionEvent e)
{
// Instantiate a variable to access the specified data object
// from the DataAdaptersCollection of the form.
// You must explicitly cast to the specific adapter type
// (ADOAdapterObject) before you can access the data adapter.
ADOAdapterObject myADOAdapter =
thisXDocument.DataAdapters["Employees"] as ADOAdapterObject;
// Display the connection information for the data adapter.
thisXDocument.UI.Alert("Data Adapter: " + myADOAdapter.Connection);
}
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)
' Instantiate a variable to access the specified data object.
' You must explicitly cast to the specific adapter type
' (ADOAdapterObject) before you can access the data adapter.
Dim myADOAdapter As ADOAdapterObject = _
thisXDocument.DataAdapters("Employees")
' Display the connection information for the data adapter.
thisXDocument.UI.Alert("Data Adapter: " + myADOAdapter.Connection)
End Sub