Freigeben über


Vorgehensweise: Zugreifen auf externe Datenquellen

Sie können bei der Arbeit mit einer InfoPath-Formularvorlage Code schreiben, um auf die sekundären Datenquellen des Formulars zuzugreifen und die enthaltenen Daten zu bearbeiten.

Jede sekundäre Datenquelle wird durch ein mithilfe der DataSource-Klasse instanziiertes Objekt dargestellt und entspricht gespeicherten Daten, die aus einer externen Datenquelle stammen, wie z. B. einer Datenbank oder einer Webdienstabfrage. Diese Datenquellen werden als sekundär bezeichnet, da der Benutzer beim Speichern eines InfoPath-Formulars die Daten nur in der Hauptdatenquelle (der primären Datenquelle) und nicht in den sekundären Datenquellen speichert. Die Verbindung mit einer Datenquelle wird durch ein mithilfe eines der Datenverbindungsklassen instanziiertes Objekt dargestellt, wie z. B. die WebServiceConnection-KIasse, die eine Datenverbindung mit einem XML-Webdienst darstellt.

Das instanziierte DataSource-Objekt stellt den Speicher der XML-Daten dar, der von einer Datenverbindung (von einer Datenbank oder einer Webdienstabfrage) zurückgegeben wird, und die Datenverbindungsklasse stellt die Datenverbindung selbst dar (wie mithilfe des Befehls Datenverbindungen im Menü Extras definiert und benannt).

Das InfoPath-Objektmodell unterstützt den Zugriff auf die sekundären Datenquellen eines Formulars mithilfe der DataSource-Klasse in Verbindung mit der DataSourceCollection-Klasse.

Das InfoPath-Objektmodell stellt auch verschiedene Datenverbindungsklassen mit Informationen über die vom Formular verwendeten Datenverbindungen bereit.

Hinweis

In Microsoft InfoPath 2003 wird eine Datenverbindung als Datenadapter bezeichnet.

Es gibt zwei verschiedene Arten von Datenverbindungen: Abfrageverbindungen werden zum Abrufen der Daten verwendet, die dann in einer sekundären Datenquelle gespeichert werden. Sendeverbindungen werden zum Senden von Daten an beispielsweise eine Datenbank oder einen Webdienst verwendet. Die gesendeten Daten werden aus den Hauptdatenquellen oder den sekundären Datenquellen kopiert.

Übersicht über die DataSourceCollection-Klasse

Die DataSourceCollection-Klasse stellt die folgenden Eigenschaften und Methoden bereit, mit deren Hilfe Formularentwickler die im Formular enthaltenen DataSource-Objektinstanzen verwalten können.

Name Beschreibung

Count-Eigenschaft

Gibt die Anzahl der DataSourceObject-Instanzen zurück, die in der Auflistung enthalten sind.

GetEnumerator-Methode

Gibt ein IEnumerator-Objekt zurück, das für die Iteration durch die Auflistung verwendet werden kann.

Item-Eigenschaft

Gibt einen Verweis auf das angegebene DataSource-Objekt nach Indexwert zurück.

Item-Eigenschaft

Gibt einen Verweis auf das angegebene DataSource-Objekt nach Namen zurück.

Übersicht über die DataSource-Klasse

Die DataSource-Klasse stellt die folgenden Methoden und Eigenschaften bereit, die Formularentwickler für die Interaktion mit einer sekundären InfoPath-Datenquelle verwenden können.

Name Beschreibung

CreateNavigator-Methode

Gibt ein XPathNavigator-Objekt zum Zugreifen auf die Datenquelle und zum Bearbeiten der Datenquelle zurück.

QueryConnection-Eigenschaft

Ruft einen Verweis auf das zugeordnete Datenverbindungsobjekt ab.

Damit Sie die Abfrage auf der Datenverbindung ausführen und die zurückgegebenen Daten als XML-Daten in den dem DataSource-Objekt zugeordneten XML-Knoten einfügen können, verwenden Sie die Execute-Methode des zugeordneten Datenverbindungsobjekts.

Name-Eigenschaft

Ruft den Namen des DataSource-Objekts ab.

ReadOnly-Eigenschaft

Ruft einen Wert ab, der angibt, ob sich die Datenquelle im Schreibschutzmodus befindet.

GetNamedNodeProperty-Methode

Ruft den Wert einer benannten Eigenschaft für den angegebenen XML-Knoten ab, bei dem es sich um einen nonattribute-Knoten in der Hauptdatenquelle handeln muss.

SetNamedNodeProperty-Methode

Legt den Wert einer benannten Eigenschaft für den angegebenen XML-Knoten fest, bei dem es sich um einen nonattribute-Knoten in der Hauptdatenquelle handeln muss.

Übersicht über die Datenverbindungsklassen

Die Klassen für den Zugriff auf Datenverbindungen stellen unterschiedliche Eigenschaften und Methoden bereit, die Daten über Verbindungen zu externen Datenquellen abrufen und an diese senden; die Datenverbindung, die einem DataSource-Objekt zugeordnet ist, hängt vom Typ der externen Datenverbindung ab. InfoPath implementiert die folgenden Klassen für den Zugriff auf Datenverbindungen.

Name Beschreibung

AdoQueryConnection-Klasse

Führt eine Abfrage einer ADO/OLE DB-Datenquelle aus; beschränkt auf Microsoft Access und Microsoft SQL Server.

AdoSubmitConnection-Klasse

Sendet an eine ADO/OLE DB-Datenquelle; beschränkt auf Microsoft Access und Microsoft SQL Server.

SharepointListQueryConnection-Klasse

Führt eine Abfrage einer SharePoint-Liste oder einer Dokumentbibliothek aus.

WebServiceConnection-Klasse

Stellt eine Verbindung zu einem XML-Webdienst her.

FileQueryConnection-Klasse

Führt eine Abfrage einer XML-Datei aus.

FileSubmitConnection

Sendet an eine XML-Datei.

EmailSubmitConnection

Sendet ein Formular als Anlage in einer E-Mail.

Verwenden der DataSourceCollection- und der DataSource-Klasse

Auf das DataSourceCollection-Objekt, das die Auflistung von einer Formularvorlage zugeordneten Datenquellen darstellt, wird über die DataSources-Eigenschaft der XmlForm-Klasse zugegriffen. Wenn Sie beispielsweise eine sekundäre Datenquelle mit Namen Mitarbeiter erstellen, die Daten aus der Tabelle Mitarbeiter in der Nordwind-Datenbank abruft, können Sie das DataSourceCollection-Objekt zum Festlegen eines Verweises auf ein DataSource-Objekt verwenden, das die abgerufenen Daten darstellt.

Im folgenden Codebeispiel wird der Name der sekundären Datenquelle an die Accessoreigenschaft der DataSourceCollection-Klasse übergeben, die einen Verweis auf das DataSource-Objekt zurückgibt, das die abgerufenen Daten der Tabelle Mitarbeiter darstellt. Der XML-Knoten, der die abgerufenen Daten der sekundären Datenquelle speichert, wird in einem Meldungsfeld mithilfe der CreateNavigator-Methode der DataSource-Klasse dargestellt, um auf die InnerXml-Eigenschaft der XPathNavigator-Klasse zuzugreifen.

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

Verwenden Sie zum Bearbeiten der in einer sekundären Datenquelle enthaltenen Daten die CreateNavigator-Methode der DataSource-Klasse, um einen Verweis auf ein XPathNavigator-Objekt zurückzugeben, das an dem Knoten positioniert ist, an dem die sekundären Daten gespeichert sind. Sie können zum Bearbeiten der Daten die Eigenschaften oder Methoden der XPathNavigator-Klasse verwenden. Weitere Informationen finden Sie unter Vorgehensweise: Arbeiten mit den Klassen "XPathNavigator" und "XPathNodeIterator".

Verwenden der DataConnectionCollection- und der DataConnection-Klasse

Auf das DataConnectionCollection-Objekt, das die Auflistung von einer Formularvorlage zugeordneten Datenverbindungen darstellt, wird über die DataConnections-Eigenschaft der XmlForm-Klasse zugegriffen. Wenn Sie beispielsweise eine sekundäre Datenquelle mit NamenMitarbeiter erstellen, die Daten aus der Tabelle Mitarbeiter in der Nordwind-Datenbank abruft, können Sie das der Formularvorlage zugeordnete DataConnectionCollection-Objekt verwenden, um einen Verweis auf die DataConnection festzulegen, die die Verbindung zur Datenbank darstellt.

Im folgenden Codebeispiel wird der Name der sekundären Datenquelle an die Accessoreigenschaft der DataConnectionCollection-Klasse übergeben, die in diesem Fall einen Verweis auf das ADOQueryConnection-Objekt zurückgibt, das die Verbindung mit der Nordwind-Datenbank darstellt. Dies funktioniert nur einwandfrei, wenn Sie das zurückgegebene Objekt explizit in den ADOQueryConnection-Typ umwandeln. Die Connection-Eigenschaft der ADOAdapterObject-Schnittstelle wird zum Anzeigen der ADO-Verbindungszeichenfolge in einem Meldungsfeld verwendet.

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

Siehe auch

Konzepte

Erstellen von InfoPath-Formularvorlagen, die von Forms Services unterstützt werden