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. |
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. |
Sendet an eine XML-Datei. |
|
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