Condividi tramite


Procedura: Accedere a origini dati esterne tramite il modello a oggetti di InfoPath 2003

Quando si utilizza un modello di modulo di InfoPath creato in base al modello a oggetti compatibile con InfoPath 2003, è possibile scrivere il codice per l'accesso alle origini dati secondarie e modificare i dati in esse contenuti.

Ogni origine dati secondaria è rappresentata da un oggetto inizializzato utilizzando l'interfaccia DataSourceObject e corrisponde a dati memorizzati ottenuti da un'origine dati esterna, ad esempio un database o una query servizio Web. Queste origini dati vengono definite secondarie perché quando l'utente salva un modulo di InfoPath, vengono salvati solo i dati inclusi nell'origine dati principale e non quelli nelle origini dati secondarie. La connessione a un'origine dati è rappresentata da un oggetto inizializzato utilizzando una delle interfacce "adattatore dati", ad esempio WebServiceAdapterObject, che rappresenta una connessione dati a un servizio Web XML.

L'oggetto DataSourceObject rappresenta l'archivio di dati XML restituito da una connessione dati (a un database o a una query di un servizio Web) e l'adattatore dati rappresenta la connessione dati stessa.

Il modello a oggetti di InfoPath supporta l'accesso alle origini dati secondarie di un modulo tramite l'utilizzo dell'interfaccia DataSourceObject associata all'interfaccia DataObjectsCollection.

Il modello a oggetti di InfoPath include inoltre un gruppo di oggetti adattatore dati contenenti informazioni sulle connessioni dati utilizzate nel modulo.

Sono disponibili due tipi di adattatori dati: gli adattatori di tipo query e gli adattatori di tipo invio. Gli adattatori di tipo query vengono utilizzati per ottenere i dati che vengono quindi memorizzati in un'origine dati secondaria, mentre gli adattatori di tipo invio vengono utilizzati per inviare dati, ad esempio a un database o a un servizio Web. I dati inviati vengono copiati dall'origine dati principale o da quelle secondarie.

Informazioni generali sull'interfaccia DataObjectsCollection

L'interfaccia DataObjectsCollection implementa le proprietà e i metodi seguenti, che gli sviluppatori di moduli possono utilizzare per gestire le istanze di DataSourceObject contenute nel modulo.

Nome Descrizione

Proprietà Count

Restituisce il numero di istanze di DataSourceObject contenute nell'insieme.

Metodo GetEnumerator

Restituisce un'interfaccia IEnumerator che può essere utilizzata per eseguire un'iterazione nell'insieme.

Proprietà Item

Restituisce un riferimento all'istanza specificata DataSourceObject.

Informazioni generali sull'interfaccia DataSourceObject

L'interfaccia DataSourceObject implementa i metodi e le proprietà seguenti, che gli sviluppatori di moduli possono utilizzare per interagire con un'origine dati secondaria di InfoPath.

Nome Descrizione

Metodo Query

Esegue la query sull'adattatore dati e inserisce i dati restituiti in formato XML nel modello DOM (Document Object Model) XML associato all'interfaccia DataSourceObject.

Proprietà DOM

Restituisce un riferimento al modello DOM XML utilizzato per memorizzare e modificare i dati tramite l'interfaccia DataSourceObject.

Proprietà Name

Restituisce un valore stringa che indica il nome dell'interfaccia DataSourceObject.

Proprietà QueryAdapter

Restituisce un riferimento all'oggetto adattatore dati associato.

Informazioni generali sulle interfacce per l'accesso agli adattatori dati

Le interfacce per l'accesso agli adattatori dati rendono disponibili varie proprietà e metodi che consentono di recuperare e inviare dati tramite connessioni a origini dati esterne. L'adattatore dati associato a un oggetto DataSourceObject dipende dal tipo di connessione dati esterna. InfoPath implementa le interfacce seguenti per l'accesso agli adattatori dati.

Nome Descrizione

Interfaccia ADOAdapterObject

Consente la connessione a origini dati ADO/OLEDB (solo per Microsoft Access e Microsoft SQL Server™).

Interfaccia SharepointListAdapterObject

Esegue la connessione a un elenco o a una raccolta documenti di SharePoint.

Interfaccia WebServiceAdapterObject

Esegue la connessione a servizi Web XML.

Oggetto XMLFileAdapterObject

Esegue la connessione a un file XML.

Utilizzo delle interfacce DataSourceObjects e DataSourceObject

È possibile accedere all'insieme DataSourceObjects tramite la proprietà DataObjects dell'interfaccia XDocument. Se, ad esempio, si crea un'origine dati secondaria denominata Employees che recupera i dati dalla tabella Employees del database di Microsoft Access Northwind Traders, è possibile utilizzare l'insieme DataSourceObjects per impostare un riferimento a un oggetto DataObject che rappresenta i dati recuperati.

Nel codice di esempio seguente, il nome dell'origine dati secondaria viene passato alla proprietà della funzione di accesso dell'interfaccia DataObjectsCollection, che restituisce un riferimento all'oggetto DataSourceObject. I dati dell'origine dati secondaria vengono visualizzati in una finestra di messaggio utilizzando la proprietà DOM dell'interfaccia DataSourceObject per accedere alla proprietà xml del modello 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

Per modificare i dati contenuti in un'origine dati secondaria, utilizzare la proprietà DOM dell'interfaccia DataSourceObject per restituire un riferimento al modello DOM XML contenente i dati. Dopo aver ottenuto tale riferimento, sarà possibile utilizzare le proprietà o i metodi del modello a oggetti per modificare i dati.

Utilizzo delle interfacce DataAdaptersCollection e DataAdapterObject

È possibile accedere all'interfaccia DataAdaptersCollection tramite la proprietà DataAdapters dell'interfaccia XDocument. Se, ad esempio, si crea un'origine dati secondaria denominata Employees che recupera i dati dalla tabella Employees del database di Microsoft Access Northwind Traders, è possibile utilizzare l'insieme DataAdapterObjects per impostare un riferimento a DataAdapterObject, che rappresenta la connessione al database.

Nel codice di esempio seguente, il nome dell'origine dati secondaria viene passata alla proprietà della funzione di accesso dell'interfaccia DataAdaptersCollection, che, in questo caso, restituisce un riferimento a un'istanza di ADOAdapterObject che rappresenta la connessione al database Northwind di Microsoft Access. Per un corretto funzionamento è necessario un cast esplicito dell'oggetto che viene restituito come ADOAdapterObject. La proprietà Connection dell'interfaccia ADOAdapterObject viene utilizzata per visualizzare la stringa di connessione ADO in una finestra di messaggio.

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