Partager via


Comment : mettre à jour une source de données avec les données d'un contrôle hôte

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.

Projets au niveau du document

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

Projets au niveau de l'application

  • Excel 2007

  • Word 2007

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

Vous pouvez lier un contrôle hôte à une source de données et mettre à jour cette source de données avec les modifications apportées aux données du contrôle.

À compter de Visual Studio 2008 Service Pack 1 (SP1), vous pouvez lier des contrôles hôtes à des données dans les projets au niveau de l'application. Si vous n'avez pas encore installé le Service Pack 1, vous ne pouvez utiliser des contrôles hôtes que dans les projets au niveau du document.

Ce processus comporte deux étapes principales :

  1. Mettre à jour la source de données en mémoire avec les données modifiées dans le contrôle. En général, la source de données en mémoire est un DataSet, un DataTableou un autre objet de données.

  2. Mettre à jour la base de données à l'aide des données modifiées dans la source de données en mémoire. Cette étape n'est applicable que si la source de données est connectée à une base de données principale, telle qu'une base de données SQL Server ou Microsoft Office Access.

Pour plus d'informations sur les contrôles hôtes et la liaison de données, consultez Vue d'ensemble des éléments hôtes et des contrôles hôtes et Liaison de données aux contrôles.

Mise à jour de la source de données en mémoire

Par défaut, les contrôles hôtes qui activent la liaison de données simple (tels que les contrôles de contenu sur un document Word ou un contrôle de plage nommée sur une feuille de calcul Excel) n'enregistrent pas les modifications de données apportées à la source de données en mémoire. En d'autres termes, lorsqu'un utilisateur final modifie une valeur dans un contrôle hôte puis s'en éloigne, la nouvelle valeur insérée dans le contrôle n'est pas automatiquement enregistrée sur la source de données.

Pour enregistrer les données sur la source de données, vous pouvez écrire un code qui met à jour la source de données en réponse à un événement spécifique au moment de l'exécution, ou vous pouvez configurer le contrôle afin de mettre à jour automatiquement la source de données en cas de changement de la valeur du contrôle.

Vous n'avez pas besoin d'enregistrer des modifications ListObject sur la source de données en mémoire. Lorsque vous liez un contrôle ListObject aux données, le contrôle ListObject enregistre automatiquement les modifications sur la source de données en mémoire sans requérir de code supplémentaire.

Pour mettre à jour la source de données en mémoire au moment de l'exécution

  • Appelez la méthode WriteValue de l'objet Binding qui lie le contrôle à la source de données.

    L'exemple suivant enregistre les modifications apportées au contrôle NamedRange sur une feuille de calcul Excel dans la source de données. Cet exemple suppose que vous avez un contrôle NamedRange nommé namedRange1 et dont la propriété Value2 est liée à un champ dans une source de données.

    Me.NamedRange1.DataBindings("Value2").WriteValue()
    
    this.namedRange1.DataBindings["Value2"].WriteValue();
    

Mise à jour automatique de la source de données en mémoire

Vous pouvez également configurer un contrôle afin qu'il mette à jour automatiquement la source de données en mémoire. Dans un projet au niveau du document, vous pouvez y parvenir à l'aide de code ou du concepteur. Dans un projet au niveau de l'application, vous devez utiliser du code.

Pour définir un contrôle afin de mettre automatiquement à jour la source de données en mémoire en utilisant du code

  • Utilisez la propriété DataSourceUpdateMode de l'objet Binding qui lie le contrôle à la source de données. Il existe deux options pour mettre à jour la source de données :

    • Pour mettre à jour la source de données lorsque le contrôle est validé, affectez la valeur OnValidation à cette propriété.

    • Pour mettre à jour la source de données en cas de changement de la valeur de la propriété liée aux données du contrôle, affectez la valeur OnPropertyChanged à cette propriété.

      Remarque :

      L'option OnPropertyChanged ne s'applique pas aux contrôles hôtes Word car Word n'offre pas de notifications en cas de modification de document ou de contrôle. Toutefois, cette option peut être utilisée pour les contrôles Windows Forms sur les documents Word.

    L'exemple suivant configure un contrôle NamedRange afin de mettre automatiquement à jour la source de données en cas de modification de la valeur dans le contrôle. Cet exemple suppose que vous avez un contrôle NamedRange nommé namedRange1 et dont la propriété Value2 est liée à un champ dans une source de données.

    Me.NamedRange1.DataBindings("Value2").DataSourceUpdateMode = _
        DataSourceUpdateMode.OnPropertyChanged
    
    this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
        DataSourceUpdateMode.OnPropertyChanged;
    

Pour définir un contrôle afin de mettre automatiquement à jour la source de données en mémoire en utilisant le concepteur

  1. Dans Visual Studio, ouvrez le document Word ou le classeur Excel dans le concepteur.

  2. Cliquez sur le contrôle que vous souhaitez utiliser pour mettre automatiquement à jour la source de données.

  3. Dans la fenêtre Propriétés, développez la propriété (DataBindings).

  4. En regard de la propriété (Advanced) cliquez sur le bouton de sélection ().

  5. Dans la boîte de dialogue Mise en forme et liaison avancée, cliquez sur la liste déroulante Mode de mise à jour de la source de données et sélectionnez l'une des valeurs suivantes :

    • Pour mettre à jour la source de données lorsque le contrôle est validé, sélectionnez OnValidation.

    • Pour mettre à jour la source de données en cas de changement de la valeur de la propriété liée aux données du contrôle, sélectionnez OnPropertyChanged.

      Remarque :

      L'option OnPropertyChanged ne s'applique pas aux contrôles hôtes Word car Word n'offre pas de notifications en cas de modification de document ou de contrôle. Toutefois, cette option peut être utilisée pour les contrôles Windows Forms sur les documents Word.

  6. Fermez la boîte de dialogue Mise en forme et liaison avancée.

Mise à jour de la base de données

Si la source de données en mémoire est associée à une base de données, vous devez mettre à jour la base de données à l'aide des modifications apportées à la source de données. Pour plus d'informations sur la mise à jour d'une base de données, consultez Vue d'ensemble de l'enregistrement de données et Comment : mettre à jour les données à l'aide d'un TableAdapter.

Pour mettre à jour la base de données

  1. Appelez la méthode EndEdit de BindingSource du contrôle.

    BindingSource est généré automatiquement lorsque vous ajoutez un contrôle lié aux données à un document ou à un classeur au moment du design. BindingSource connecte le contrôle au groupe de données typé dans votre projet. Pour plus d'informations, consultez Vue d'ensemble du composant BindingSource.

    L'exemple de code suivant suppose que votre projet contienne un contrôle BindingSource nommé customersBindingSource.

    Me.CustomersBindingSource.EndEdit()
    
    this.customersBindingSource.EndEdit();
    
  2. Appelez la méthode Update du TableAdapter généré dans votre projet.

    Le TableAdapter est généré automatiquement lorsque vous ajoutez un contrôle lié aux données à un document ou à un classeur au moment du design. Le TableAdapter connecte le groupe de données typé de votre projet à la base de données. Pour plus d'informations, consultez Vue d'ensemble de TableAdapter.

    L'exemple de code suivant suppose que vous ayez une connexion à la table Customers dans la base de données Northwind, et que votre projet contienne un TableAdapter nommé customersTableAdapter et un groupe de données typé nommé northwindDataSet.

    Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
    
    this.customersTableAdapter.Update(this.northwindDataSet.Customers);
    

Voir aussi

Tâches

Comment : mettre à jour les données à l'aide d'un TableAdapter

Comment : parcourir les enregistrements de base de données dans une feuille de calcul

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'objets

Comment : remplir des documents avec les données d'une base de données

Comment : remplir des documents avec les données de services

Concepts

Liaison de données aux contrôles

Vue d'ensemble de l'enregistrement de données

Historique des modifications

Date

Historique

Raison

Juillet 2008

Ajout d'informations relatives à la liaison de données dans des compléments d'application.

Modifications de fonctionnalités dans le SP1.