Exemplarische Vorgehensweise: Komplexe Datenbindung in Projekten auf Anwendungsebene
Sie können Daten in Projekten auf Anwendungsebene an Hoststeuerelemente und Windows Forms-Steuerelemente binden.In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie einem Microsoft Office Excel-Arbeitsblatt Steuerelemente hinzugefügt werden, die zur Laufzeit an Daten gebunden werden.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Anwendungsebene für Excel 2013 und Excel 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:
Hinzufügen eines ListObject-Steuerelements zu einem Arbeitsblatt zur Laufzeit
Erstellen einer BindingSource, die das Steuerelement mit einer Instanz eines Datasets verbindet
Hinweis |
---|
Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen. |
Vorbereitungsmaßnahmen
Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:
-
Eine Version von Visual Studio 2012, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.110\).md).
Excel 2013 oder Excel 2010.
Zugriff auf eine ausgeführte Instanz von SQL Server 2005 oder SQL Server 2005 Express, an die die AdventureWorksLT-Beispieldatenbank angefügt ist.Sie können die AdventureWorksLT-Datenbank von der CodePlex-Website herunterladen.Weitere Informationen zum Anhängen von Datenbanken finden Sie unter den folgenden Themen:
Informationen zum Anfügen einer Datenbank mit SQL Server Management Studio oder SQL Server Management Studio Express finden Sie unter Gewusst wie: Anfügen einer Datenbank (SQL Server Management Studio).
Informationen zum Anfügen einer Datenbank über die Befehlszeile finden Sie unter Gewusst wie: Anfügen einer Datenbankdatei an SQL Server Express.
Erstellen eines neuen Projekts
Im ersten Schritt erstellen Sie ein Excel-Add-In-Projekt.
So erstellen Sie ein neues Projekt
Erstellen Sie mit Visual Basic oder C# ein Excel-Add-In-Projekt mit dem Namen "Auffüllen von Arbeitsblättern aus einer Datenbank".
Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Office-Projekten in Visual Studio.
Visual Studio öffnet die Datei ThisAddIn.vb oder ThisAddIn.cs, und fügt das Projekt "Auffüllen von Arbeitsblättern aus einer Datenbank" dem Projektmappen-Explorer hinzu.
Erstellen einer Datenquelle
Verwenden Sie das Datenquellenfenster, um dem Projekt ein typisiertes Dataset hinzuzufügen.
So fügen Sie dem Projekt ein typisiertes Dataset hinzu
Wenn das Datenquellen nicht sichtbar ist, zeigen Sie sie durch, auf der Menüleiste auf und Ansicht auswählen, Weitere Fenster, Datenquellen.
Wählen Sie Neue Datenquelle hinzufügen, um Assistent zum Konfigurieren von Datenquellen zu starten.
Klicken Sie auf Datenbank und anschließend auf Weiter.
Wenn eine Verbindung mit der AdventureWorksLT-Datenbank vorhanden ist, wählen Sie diese Verbindung aus, und klicken Sie auf Weiter.
Klicken Sie andernfalls auf Neue Verbindung, und erstellen Sie die neue Verbindung im Dialogfeld Verbindung hinzufügen.Weitere Informationen finden Sie unter Gewusst wie: Herstellen einer Verbindung zu Daten in einer Datenbank.
Klicken Sie auf der Seite Verbindungszeichenfolge in der Anwendungskonfigurationsdatei speichern auf Weiter.
Erweitern Sie auf der Seite Datenbankobjekte auswählen den Knoten Tabellen, und wählen Sie Address (SalesLT) aus.
Klicken Sie auf Fertig stellen.
Die Datei AdventureWorksLTDataSet.xsd wird dem Projektmappen-Explorer hinzugefügt.Diese Datei definiert die folgenden Elemente:
Ein typisiertes Dataset mit dem Namen AdventureWorksLTDataSet.Dieses Dataset stellt den Inhalt der Address (SalesLT)-Tabelle in der AdventureWorksLT-Datenbank dar.
Ein TableAdapter mit dem Namen AddressTableAdapter.Dieser TableAdapter kann zum Lesen von Daten aus und zum Schreiben von Daten in AdventureWorksLTDataSet verwendet werden.Weitere Informationen finden Sie unter Übersicht über TableAdapters.
Zu einem späteren Zeitpunkt in dieser exemplarischen Vorgehensweise verwenden Sie beide Objekte.
Erstellen von Steuerelementen und Binden von Steuerelementen an Daten
Für diese exemplarische Vorgehensweise werden vom ListObject-Steuerelement sämtliche Daten in der ausgewählten Tabelle angezeigt, sobald der Benutzer die Arbeitsmappe öffnet.Das Listenobjekt stellt mit einer BindingSource eine Verbindung des Steuerelements mit der Datenbank her.
Weitere Informationen zum Binden von Steuerelementen an Daten finden Sie unter Binden von Daten an Steuerelemente in Office-Projektmappen.
So fügen Sie das Listenobjekt, das Dataset und den Tabellenadapter hinzu
Deklarieren Sie in der ThisAddIn-Klasse die folgenden Steuerelemente, um die Address-Tabelle des AdventureWorksLTDataSet-Datasets anzuzeigen.
Private addressListObject As Microsoft.Office.Tools.Excel.ListObject Private adventureWorksDataSet As AdventureWorksLTDataSet Private addressTableAdapter As AdventureWorksLTDataSetTableAdapters.AddressTableAdapter Private addressBindingSource As System.Windows.Forms.BindingSource
private Microsoft.Office.Tools.Excel.ListObject addressListObject; private AdventureWorksLTDataSet adventureWorksDataSet; private AdventureWorksLTDataSetTableAdapters.AddressTableAdapter addressTableAdapter; private System.Windows.Forms.BindingSource addressBindingSource;
Fügen Sie in der ThisAddIn_Startup-Methode den folgenden Code hinzu, um das Dataset zu initialisieren und das Dataset mit Informationen aus dem AdventureWorksLTDataSet-Dataset zu füllen.
Me.addressTableAdapter = New AdventureWorksLTDataSetTableAdapters.AddressTableAdapter() Me.adventureWorksDataSet = New AdventureWorksLTDataSet() Me.addressTableAdapter.Fill(Me.adventureWorksDataSet.Address) Me.addressBindingSource = New System.Windows.Forms.BindingSource()
this.addressTableAdapter = new AdventureWorksLTDataSetTableAdapters.AddressTableAdapter(); this.adventureWorksDataSet = new AdventureWorksLTDataSet(); this.addressTableAdapter.Fill(this.adventureWorksDataSet.Address); this.addressBindingSource = new System.Windows.Forms.BindingSource();
Fügen Sie der ThisAddIn_Startup-Methode folgenden Code hinzu:Dadurch wird ein Hostelement generiert, das das Arbeitsblatt erweitert.Weitere Informationen finden Sie unter Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit.
Dim worksheet As Excel.Worksheet = DirectCast(Me.Application.ActiveWorkbook.Worksheets(1), Excel.Worksheet) ' Create a workhseet host item. Dim extendedWorksheet As Worksheet = Globals.Factory.GetVstoObject(worksheet)
Excel.Worksheet worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1]; // Create a workhseet host item. Worksheet extendedWorksheet = Globals.Factory.GetVstoObject(worksheet);
Erstellen Sie einen Bereich, und fügen Sie das ListObject-Steuerelement hinzu.
Dim cell As Excel.Range = extendedWorksheet.Range("$A$1:$G$5", System.Type.Missing) Me.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1")
Excel.Range cell = extendedWorksheet.Range["$A$1:$G$5"]; this.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1");
Binden Sie das Listenobjekt mithilfe von BindingSource an AdventureWorksLTDataSet.Übergeben Sie die Namen der Spalten, die an das Listenobjekt gebunden werden sollen.
Me.addressBindingSource.DataSource = Me.adventureWorksDataSet.Address Me.addressListObject.AutoSetDataBoundColumnHeaders = True Me.addressListObject.SetDataBinding( _ Me.addressBindingSource, "", "AddressID", "AddressLine1", _ "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode")
this.addressBindingSource.DataSource = this.adventureWorksDataSet.Address; this.addressListObject.AutoSetDataBoundColumnHeaders = true; this.addressListObject.SetDataBinding( this.addressBindingSource, "", "AddressID", "AddressLine1", "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode");
Testen des Add-Ins
Wenn Sie Excel öffnen, zeigt das ListObject-Steuerelement die Daten aus der Address-Tabelle des AdventureWorksLTDataSet-Datasets an.
So testen Sie das Add-In
Drücken Sie F5.
Ein ListObject-Steuerelement mit dem Namen addressListObject wird im Arbeitsblatt erstellt.Gleichzeitig werden dem Projekt ein Datasetobjekt mit dem Namen adventureWorksLTDataSet und eine BindingSource mit dem Namen addressBindingSource hinzugefügt.Das ListObject ist an die BindingSource gebunden, die wiederum an das DataSet-Objekt gebunden ist.
Siehe auch
Aufgaben
Gewusst wie: Auffüllen von Arbeitsblättern mit Daten aus einer Datenbank
Gewusst wie: Auffüllen von Dokumenten mit Daten aus einer Datenbank
Gewusst wie: Auffüllen von Dokumente mit Daten aus Diensten
Gewusst wie: Auffüllen von Dokumenten mit Daten von Objekten
Gewusst wie: Ausführen eines Bildlaufs durch Datenbankdatensätze in einem Arbeitsblatt
Gewusst wie: Aktualisieren einer Datenquelle mit Daten eines Hoststeuerelements
Exemplarische Vorgehensweise: Einfache Datenbindung in Projekten auf Dokumentebene
Exemplarische Vorgehensweise: Komplexe Datenbindung in Projekten auf Dokumentebene
Referenz
Übersicht über die BindingSource-Komponente
Konzepte
Übersicht über die Verwendung lokaler Datenbankdateien in Office-Lösungen
Binden von Windows Forms-Steuerelementen an Daten in Visual Studio
Übersicht über die Verwendung lokaler Datenbankdateien in Office-Lösungen
Herstellen einer Verbindung mit Daten in Windows Forms-Anwendungen