Acceso a orígenes de datos externos

Al trabajar con una plantilla de formulario de InfoPath, puede escribir código para obtener acceso a los orígenes de datos secundarios y manipular los datos que contienen.

Cada origen de datos secundario está representado mediante un objeto del que se crea una instancia utilizando la clase DataSource y que corresponde a datos almacenados obtenidos de algún origen de datos externos, como una base de datos o una consulta de servicio Web. Estos orígenes de datos se denominan secundarios porque cuando el usuario guarda un formulario de InfoPath, sólo guarda los datos del origen de datos principal (o primario), no los de los orígenes de datos secundarios. La conexión a un origen de datos se representa mediante un objeto del que se crea una instancia utilizando una de las clases de "adaptador de datos", como la clase WebServiceConnection , que representa una conexión de datos a un servicio Web XML.

El objeto del que se crea una instancia DataSource representa el almacenamiento de datos XML que devuelve una conexión de datos (de una base de datos o a una consulta de servicio web) y la clase de "conexión de datos" representa la propia conexión de datos (como se define y denomina usando el comando Conexiones de datos de la ficha Datos).

El modelo de objetos de InfoPath admite el acceso a los orígenes de datos secundarios de un formulario mediante la utilización de la clase DataSource en asociación con la clase DataSourceCollection .

El modelo de objetos de InfoPath también proporciona un conjunto de clases de conexión de datos que contienen información sobre las conexiones de datos que utiliza el formulario.

Nota:

[!NOTA] En Microsoft InfoPath 2003, una conexión de datos se denomina adaptador de datos.

Las conexiones de datos son de dos tipos: las conexiones de consulta se usan para obtener los datos que, a continuación, se almacenan en un origen de datos secundario. Las conexiones de envío se usan para enviar datos, por ejemplo, a una base de datos o a un servicio web. Los datos enviados se copian de los orígenes de datos principal o secundario.

Información general sobre la clase DataSourceCollection

La clase DataSourceCollection proporciona las siguientes propiedades y métodos que los programadores de formularios pueden utilizar para administrar las instancias de DataSourceCollection que contenga el formulario.

Name Descripción
Propiedad Count
Devuelve el número de instancias de objetos DataSource contenidas en la colección.
Método GetEnumerator
Devuelve un IEnumerator que se puede utilizar para recorrer en iteración la colección.
Item[Int32] (propiedad)
Devuelve una referencia al objeto DataSource especificado de la colección por su valor de índice.
Item[String] (propiedad)
Devuelve una referencia al objeto DataSource especificado por nombre.

Información general sobre la clase DataSource

La clase DataSourceCollection proporciona el método y las propiedades siguientes que los programadores de formularios pueden utilizar para interactuar con un origen de datos secundario de InfoPath.

Name Descripción
CreateNavigator (método)
Devuelve un objeto XPathNavigator para acceder al origen de datos y editarlo.
QueryConnection (propiedad)
Obtiene una referencia al objeto de conexión de datos asociado. Para ejecutar la consulta en la conexión de datos e insertar los datos devueltos como XML en el nodo XML asociado al objeto DataSource , use el método Execute del objeto de conexión de datos asociado.
Propiedad Name
Obtiene el nombre del objeto DataSource.
ReadOnly (propiedad)
Obtiene un valor que indica si el origen de datos está en un estado de sólo lectura.
Método GetNamedNodeProperty
Obtiene el valor de una propiedad con nombre para el nodo XML especificado, que debe ser un nodo nonattribute en el origen de datos principal.
SetNamedNodeProperty ( método)
Establece el valor de una propiedad con nombre para el nodo XML especificado, que deberá ser un nodo nonattribute en el origen de datos principal.

Información general sobre las clases de conexión de datos

Las clases para acceder a las conexiones de datos proporcionan diferentes propiedades y métodos que recuperan y envían datos a través de conexiones a orígenes de datos externos; la conexión de datos asociada a un objeto DataSource depende del tipo de conexión de datos externa. InfoPath implementa las clases siguientes para acceder a las conexiones de datos.

Name Descripción
Clase AdoQueryConnection
Consulta un origen de datos ADO/OLEDB (sólo en Microsoft Access y Microsoft SQL Server).
Clase AdoSubmitConnection
Envía un origen de datos ADO/OLEDB (sólo en Microsoft Access y Microsoft SQL Server).
Clase SharePointListRWQueryConnection
Consulta una biblioteca de documentos o lista de SharePoint.
SharePointListRWSubmitConnection
Se conecta a una biblioteca de documentos o una lista de SharePoint.
Clase WebServiceConnection
Se conecta a un servicio Web XML.
FileQueryConnection (clase)
Consulta un archivo XML.
FileSubmitConnection (clase)
Envía un archivo XML.
EmailSubmitConnection (clase)
Envía un formulario como datos adjuntos en el correo electrónico.
BdcQueryConnection (clase)
Consulta una lista externa en un servidor que ejecuta SharePoint Foundation 2010 o SharePoint Server 2010.
BdcSubmitConnection (clase)
Se envía a una lista externa en un servidor que ejecuta SharePoint Foundation 2010 o SharePoint Server 2010.

Uso de las clases DataSourceCollection DataSource

Se tiene acceso al objeto DataSourceCollection que representa la colección de orígenes de datos asociada con una plantilla de formulario a través de la propiedad DataSources de la clase XmlForm . Por ejemplo, si se crea un origen de datos secundario denominado Empleados que recupera datos de la tabla Empleados de la base de datos Neptuno, puede usar el objeto DataSourceCollection para establecer una referencia al objeto DataSource que representa los datos recuperados.

En el ejemplo de código siguiente, el nombre del origen de datos secundarios se pasa a la propiedad descriptor de acceso de la clase DataSourceCollection, que devuelve una referencia al objeto DataSource que representa los datos de la tabla Empleados recuperados. En nodo XML que almacena los datos recuperados del origen de datos secundario se muestra en un cuadro de diálogo usando el método CreateNavigator de la clase DataSource para tener acceso a la propiedad InnerXml de la clase 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())

Para manipular los datos contenidos en un origen de datos secundario, utilice el método CreateNavigator de la clase DataSource para devolver una referencia a un objeto XPathNavigator situado en el nodo en el que se almacenan los datos secundarios. Puede usar las propiedades o los métodos de la clase XPathNavigator para manipular los datos. Para obtener más información, vea Trabajar con las clases XPathNavigator y XPathNodeIterator.

Uso de las clases DataSourceCollection y DataConnection

El objeto DataConnectionCollection que representa las conexiones de datos asociadas con una plantilla de formulario a través de la propiedad DataConnections de la clase XmlForm. Por ejemplo, si crea un origen de datos secundario llamado Empleados que recupera datos de la tabla Empleados de la base de datos Neptuno, puede usar el objeto DataConnectionCollection asociado a la plantilla de formulario para establecer una referencia a la DataConnection que representa la conexión con la base de datos.

En el siguiente ejemplo de código, el nombre del origen de datos secundario se pasa a la propiedad descriptor de acceso de la clase DataConnectionCollection, que en este caso devuelve una referencia al objeto ADOQueryConnection que representa la conexión a la base de datos Neptuno. Para que esto funcione correctamente, debe convertir explícitamente el objeto devuelto en tipo ADOQueryConnection. La propiedad Connection de la interfaz ADOAdapterObject se utiliza para mostrar la cadena de conexión ADO en un cuadro de mensaje.

// 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)

Vea también

Crear plantillas de formulario de InfoPath que funcionan con InfoPath Forms Services