Compartir a través de


Cómo: Obtener acceso a orígenes de datos externos con el modelo de objetos de InfoPath 2003

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

Cada origen de datos secundario está representado por un objeto del que se crea una instancia utilizando la interfaz DataSourceObject 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, 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 interfaces "adaptador de datos", como la interfaz WebServiceAdapterObject, que representa una conexión de datos a un servicio Web XML.

El objeto DataSourceObject del que se crea una instancia representa el almacenamiento de datos XML que devuelve una conexión de datos (a una base de datos o a una consulta de servicio web); el adaptador de datos representa la propia conexión de 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 interfaz DataSourceObject en asociación con la interfaz DataObjectsCollection.

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

Hay dos tipos de adaptadores de datos: adaptadores de datos y adaptadores de envío. Los adaptadores de consulta se usan para obtener los datos que, a continuación, se almacenan en un origen de datos secundario, mientras que los adaptadores 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 interfaz DataObjectsCollection

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

Nombre Descripción

Propiedad Count

Devuelve el número de instancias DataSourceObject contenidas en la colección

Método GetEnumerator

Devuelve un IEnumerator que se puede utilizar para recorrer en iteración la colección.

Propiedad Item

Devuelve una referencia a la instancia DataSourceObject especificada

Información general sobre la interfaz DataSourceObject

La interfaz DataSourceObject 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.

Nombre Descripción

Método Query

Ejecuta la consulta en el adaptador de datos e inserta los datos devueltos como XML en el modelo de objetos de documento (DOM) XML asociado a DataSourceObject.

Propiedad DOM

Devuelve una referencia al XML DOM que se utiliza para almacenar y manipular datos mediante DataSourceObject.

Propiedad Name

Devuelve un valor de cadena que indica el nombre de DataSourceObject

Propiedad QueryAdapter

Devuelve una referencia al objeto adaptador de datos asociado.

Información general sobre las interfaces de adaptadores de datos

Las interfaces para obtener acceso a adaptadores de datos ofrecen distintas propiedades y métodos que recuperan y envían datos a través de conexiones a orígenes de datos externos. El adaptador de datos que se asocie a un objeto DataSourceObject dependerá del tipo de conexión de datos externos que se utilice. InfoPath implementa las siguientes interfaces para obtener acceso a adaptadores de datos:

Nombre Descripción

Interfaz ADOAdapterObject

Se conecta a orígenes de datos ADO/OLEDB (sólo en Microsoft Access y Microsoft SQL Server™).

Interfaz SharepointListAdapterObject

Se conecta a una biblioteca de documentos o lista de SharePoint.

Interfaz WebServiceAdapterObject

Se conecta a servicios web XML.

Objeto XMLFileAdapterObject

Se conecta a un archivo XML.

Uso de las interfaces DataSourceObjects y DataSourceObject

El acceso a la colección DataSourceObjects se obtiene a través de la propiedad DataObjects de la interfaz XDocument. Por ejemplo, si crea un origen de datos secundario con el nombre Empleados que recupera datos de la tabla Empleados de la base de datos Neptuno de Microsoft Access, puede utilizar la colección DataSourceObjects para establecer una referencia al objeto DataObject que representa los datos recuperados.

En el ejemplo de código siguiente, el nombre del origen de datos secundarios se pasa a la propiedad de descriptor de acceso de la interfaz DataObjectsCollection, que devuelve una referencia al objeto DataSourceObject. Los datos del origen de datos secundario se muestran en un cuadro de mensaje mediante la propiedad DOM de la interfaz DataSourceObject para obtener acceso a la propiedad xml del XML DOM.

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

Para manipular los datos contenidos en un origen de datos secundario, utilice la propiedad DOM de la interfaz DataSourceObject para devolver una referencia al XML DOM que contiene los datos. Si se tiene la referencia al XML DOM, se puede usar cualquiera de sus propiedades o métodos para manipular los datos que contiene.

Uso de las interfaces DataAdaptersCollection y DataAdapterObject

El acceso a la interfaz DataAdaptersCollection se obtiene a través de la propiedad DataAdapters de la interfaz XDocument. Por ejemplo, si crea un origen de datos secundario con el nombre Empleados que recupera datos de la tabla Empleados de la base de datos Neptuno de Microsoft Access, puede utilizar la colección DataAdapterObjects para establecer una referencia al objeto DataAdapterObject que representa la conexión a la base de datos.

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

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