Procédure pas à pas : liaison de données complexe dans un projet au niveau de l'application

Mise à jour : Juillet 2008

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau de l'application

Version de Microsoft Office

  • Excel 2007

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

À compter de Visual Studio 2008 Service Pack 1 (SP1), vous pouvez lier des données aux contrôles hôtes et aux contrôles Windows Forms dans les projets au niveau de l'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.

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.

Remarque :

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur 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 avez besoin des éléments suivants :

  • Visual Studio Tools pour Office (composant facultatif de Visual Studio 2008 Professional et Visual Studio Team System).

    Visual Studio Tools pour Office est installé par défaut avec les versions répertoriées de Visual Studio. Pour vérifier s'il est installé, consultez Installation de Visual Studio Tools pour Office.

  • Excel 2007

  • 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 :

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 Complément Excel 2007 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 Visual Studio Tools pour Office.

    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

  1. Dans le menu Données, cliquez sur Ajouter une nouvelle source de données.

    L'Assistant Configuration de source de données s'ouvre.

  2. Cliquez sur Base de données, puis sur Suivant.

  3. 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 : créer des connexions à des bases de données SQL Server.

  4. Sur la page Enregistrer la chaîne de connexion dans le fichier de configuration de l'application, cliquez sur Suivant.

  5. Sur la page Choisir vos objets de base de données, développez le nœud Tables, puis sélectionnez Address (SalesLT).

  6. 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.

Pour ajouter l'objet de liste, le groupe de données et l'adaptateur de table

  1. 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;
    
  2. 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();
    
  3. 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..

    Dim worksheet As Excel.Worksheet = DirectCast(Me.Application.ActiveWorkbook.Worksheets(1), Excel.Worksheet)
    Dim extendedWorksheet As Worksheet = worksheet.GetVstoObject()
    
    Excel.Worksheet worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1];
    Worksheet extendedWorksheet = worksheet.GetVstoObject();
    
  4. 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");
    
  5. Liez le contrôle de contenu à AdventureWorksLTDataSet en utilisant 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

Concepts

Liaison de données aux contrôles

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

Vue d'ensemble de l'affichage des données

Vue d'ensemble de l'utilisation de fichiers de base de données locaux dans les solutions Office

Vue d'ensemble de la connexion aux données dans Visual Studio

Référence

Vue d'ensemble du composant BindingSource

Autres ressources

Données dans les solutions Office

Historique des modifications

Date

Historique

Raison

Juillet 2008

Ajout d'une rubrique.

Modifications de fonctionnalités dans le SP1.