Procédure pas à pas : liaison de données complexe dans un projet au niveau de l'application
Vous pouvez lier des données aux contrôles hôtes et Windows Forms dans les projets de niveau application. Cette procédure pas à pas montre comment ajouter des contrôles à une feuille de calcul Microsoft Office Excel et les lier aux données au moment de l'exécution.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau application pour Excel 2007 et Excel 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Cette procédure pas à pas décrit les tâches suivantes :
Ajout d'un contrôle ListObject à une feuille de calcul au moment de l'exécution.
Création d'un BindingSource qui connecte le contrôle à une instance d'un groupe de données.
Notes
Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.
Composants requis
Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :
-
Une édition de Visual Studio 2010 qui inclut les outils de développement Microsoft Office. Pour plus d'informations, consultez [Configuration d'un ordinateur pour développer des solutions Office](bb398242\(v=vs.100\).md).
Excel 2007 ou Excel 2010
Accès à une instance en cours d'exécution de SQL Server 2005 ou SQL Server 2005 Express à laquelle l'exemple de base de données AdventureWorksLT est attaché. Vous pouvez télécharger la base de données AdventureWorksLT à partir du site Web CodePlex (en anglais). Pour plus d'informations sur la façon d'attacher une base de données, consultez les rubriques suivantes :
Pour attacher une base de données en utilisant SQL Server Management Studio ou SQL Server Management Studio Express, consultez Procédure : attacher une base de données (SQL Server Management Studio).
Pour attacher une base de données en utilisant la ligne de commande, consultez Procédure : attacher un fichier de base de données à SQL Server Express.
Création d'un projet
La première étape consiste à créer un projet de complément Excel.
Pour créer un projet
Créez un projet de complément Excel avec le nom Remplir des documents à partir d'une base de données, en utilisant au choix Visual Basic ou C#.
Pour plus d'informations, consultez Comment : créer des projets Office dans Visual Studio.
Visual Studio ouvre le fichier ThisAddIn.vb ou ThisAddIn.cs et ajoute le projet Remplir des feuilles de calcul à partir d'un projet de base de données dans l'Explorateur de solutions.
Création d'une source de données
Utilisez la fenêtre Sources de données pour ajouter un groupe de données typé à votre projet.
Pour ajouter un groupe de données typé au projet
Dans le menu Données, cliquez sur Ajouter une nouvelle source de données.
L'Assistant Configuration de source de données s'ouvre.
Cliquez sur Base de données, puis sur Suivant.
Si vous disposez d'une connexion active à la base de données AdventureWorksLT, choisissez cette connexion, puis cliquez sur Suivant.
Dans le cas contraire, cliquez sur Nouvelle connexion, puis utilisez la boîte de dialogue Ajouter une connexion pour créer la nouvelle connexion. Pour plus d'informations, consultez Comment : établir une connexion à des données d'une base de données.
Sur la page Enregistrer la chaîne de connexion dans le fichier de configuration de l'application, cliquez sur Suivant.
Sur la page Choisir vos objets de base de données, développez le nœud Tables, puis sélectionnez Address (SalesLT).
Cliquez sur Terminer.
Le fichier AdventureWorksLTDataSet.xsd est ajouté à l'Explorateur de solutions. Ce fichier définit les éléments suivants :
un groupe de données typé nommé AdventureWorksLTDataSet. Ce groupe de données représente le contenu de la table Address (SalesLT) dans la base de données AdventureWorksLT.
Un TableAdapter nommé AddressTableAdapter. Ce TableAdapter peut être utilisé pour lire et écrire des données dans AdventureWorksLTDataSet. Pour plus d'informations, consultez Vue d'ensemble de TableAdapter.
Vous utiliserez ces deux objets plus loin dans cette procédure pas à pas.
Création et liaison de contrôles à des données
Pour cette procédure pas à pas, le contrôle ListObject affiche toutes les données dans la table que vous avez sélectionnée dès que l'utilisateur ouvre le classeur. L'objet de liste utilise un BindingSource pour connecter le contrôle à la base de données.
Pour plus d'informations sur la liaison des contrôles aux données, consultez Liaison de données aux contrôles dans les solutions Office.
Pour ajouter l'objet de liste, le groupe de données et l'adaptateur de table
Dans la classe ThisAddIn, déclarez les contrôles suivants afin d'afficher la table Address du groupe de données AdventureWorksLTDataSet.
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;
Dans la méthode ThisAddIn_Startup, ajoutez le code suivant afin d'initialiser le groupe de données et le remplir à l'aide des informations de la base de données AdventureWorksLTDataSet.
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();
Ajoutez le code suivant à la méthode ThisAddIn_Startup. Cela génère un élément hôte qui étend la feuille de calcul. Pour plus d'informations, consultez Extension de documents Word et de classeurs Excel dans des compléments d'application au moment de l'exécution..
Notes
L'exemple suivant fonctionne dans les projets qui ciblent .NET Framework 4. Pour utiliser cet exemple dans des projets qui ciblent .NET Framework 3.5, consultez les commentaires du code.
Dim worksheet As Excel.Worksheet = DirectCast(Me.Application.ActiveWorkbook.Worksheets(1), Excel.Worksheet) ' Create a workhseet host item for .NET Framework 4 projects. Dim extendedWorksheet As Worksheet = Globals.Factory.GetVstoObject(worksheet) ' For .NET Framework 3.5 projects, use the following code to create a worksheet host item. ' Dim extendedWorksheet As Worksheet = worksheet.GetVstoObject()
Excel.Worksheet worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1]; // Create a workhseet host item for .NET Framework 4 projects. Worksheet extendedWorksheet = Globals.Factory.GetVstoObject(worksheet); // For .NET Framework 3.5 projects, use the following code to create a worksheet host item. // Worksheet extendedWorksheet = worksheet.GetVstoObject();
Créez une plage et ajoutez le contrôle ListObject.
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", System.Type.Missing]; this.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1");
Liez l'objet de liste à AdventureWorksLTDataSet l'aide de BindingSource. Passez les noms des colonnes que vous souhaitez lier à l'objet de liste.
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");
Test du complément
Lorsque vous ouvrez Excel, le contrôle ListObject affiche les données de la table Address du groupe de données AdventureWorksLTDataSet.
Pour tester le complément
Appuyez sur F5.
Un contrôle ListObject nommé addressListObject est créé dans la feuille de calcul. Parallèlement, un objet de groupe de données nommé adventureWorksLTDataSet et un BindingSource nommé addressBindingSource sont ajoutés au projet. ListObject est lié au BindingSource, qui est lui-même lié à l'objet de groupe de données.
Voir aussi
Tâches
Comment : remplir des feuilles de calcul avec des données provenant d'une base de données
Comment : remplir des documents avec les données d'une base de données
Comment : remplir des documents avec les données de services
Comment : remplir des documents avec les données d'objets
Comment : parcourir les enregistrements de base de données dans une feuille de calcul
Comment : mettre à jour une source de données avec les données d'un contrôle hôte
Procédure pas à pas : liaison de données simple dans un projet au niveau du document
Procédure pas à pas : liaison de données complexe dans un projet au niveau du document
Référence
Vue d'ensemble du composant BindingSource
Concepts
Vue d'ensemble de l'utilisation de fichiers de base de données locaux dans les solutions Office
Vue d'ensemble des sources de données
Liaison de contrôles Windows Forms à des données dans Visual Studio
Vue d'ensemble de l'utilisation de fichiers de base de données locaux dans les solutions Office
Connexion à des données dans des applications Windows Forms