Comment : mettre à jour une source de données avec les données d'un contrôle hôte
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. Ce processus comporte deux étapes principales :
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.
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 dans les solutions Office.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document et de niveau application pour les applications suivantes : Excel 2007, Excel 2010, Word 2007 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
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 le mode System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged 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 System.Windows.Forms.DataSourceUpdateMode.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 System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged à cette propriété.
Notes
L'option System.Windows.Forms.DataSourceUpdateMode.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
Dans Visual Studio, ouvrez le document Word ou le classeur Excel dans le concepteur.
Cliquez sur le contrôle que vous souhaitez utiliser pour mettre automatiquement à jour la source de données.
Dans la fenêtre Propriétés, développez la propriété (DataBindings).
En regard de la propriété (Advanced) cliquez sur le bouton de sélection ().
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.
Notes
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.
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 Enregistrement de données dans des groupes de données et Comment : mettre à jour les données à l'aide d'un TableAdapter.
Pour mettre à jour la base de données
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();
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
Enregistrement de données dans des groupes de données