Partager via


Mise en cache des données

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 du document

Version de Microsoft Office

  • Version 2007 de Microsoft Office System

  • Microsoft Office 2003

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

Vous pouvez mettre en cache des objets de données dans une personnalisation au niveau du document afin de pouvoir accéder aux données hors connexion ou sans ouvrir Microsoft Office Word ni Microsoft Office Excel. Pour qu'un objet puisse être mis en cache, il doit avoir un type de données qui réponde à certaines spécifications. De nombreux types de données courants du .NET Framework satisfont à ces exigences, notamment String, DataSet et DataTable.

Il y a deux façons d'ajouter un objet au cache de données :

Après avoir ajouté un objet au cache de données, vous pouvez accéder aux données en mémoire cache et les modifier sans avoir à démarrer Word ou Excel. Pour plus d'informations, consultez Accès aux données des documents sur le serveur.

Prérequis pour les objets de données à mettre en cache

Pour que les instances de types de données que vous créez puissent être mises en mémoire cache, il faut que les types de données répondent aux spécifications suivantes :

  • doit être un champ public en lecture/écriture ou une propriété d'un élément hôte, p. ex. : les classes ThisDocument ou ThisWorkbook ;

  • ne doit pas être un indexeur ou autre propriété paramétrée.

En outre, l'objet de données doit être sérialisable par la classe XmlSerializer, ce qui signifie qu'il doit avoir les caractéristiques suivantes :

  • doit être un type public ;

  • doit avoir un constructeur public sans paramètres ;

  • ne doit pas exécuter de code requérant des privilèges de sécurité supplémentaires ;

  • doit exposer uniquement des propriétés publiques en lecture/écriture (les autres propriétés seront ignorées) ;

  • ne doit pas exposer de tableaux multidimensionnels (les tableaux imbriqués sont acceptés) ;

  • ne doit pas retourner d'interfaces des propriétés et champs ;

  • ne doit pas implémenter IDictionary si une collection.

Contrôle du comportement des objets mis en cache

Pour mieux contrôler le comportement d'un objet mis en cache, vous pouvez implémenter l'interface ICachedType sur le type de l'objet mis en cache. Par exemple, vous pouvez implémenter cette interface si vous souhaitez contrôler la manière dont l'utilisateur est informé d'une modification de l'objet. Pour obtenir des exemples de code illustrant l'implémentation de ICachedType, consultez la classe ControlCollection dans les exemples d'applications suivants :

Apport de modifications persistantes à des données en mémoire cache dans des documents protégés par mot de passe

Dans les projets au niveau du document pour Word 2007 et Excel 2007, si vous mettez en cache des objets de données dans un document protégé avec un mot de passe, les modifications apportées aux données en mémoire cache ne seront pas enregistrées. À compter de Visual Studio 2008 Service Pack 1 (SP1), vous pouvez enregistrer les modifications apportées aux données en mémoire cache en substituant deux méthodes. Substituez ces méthodes afin de supprimer temporairement la protection lorsque le document est enregistré, puis réappliquez la protection une fois l'enregistrement terminé.

Pour plus d'informations, consultez Comment : mettre en cache des données dans un document protégé par un mot de passe.

Prévention des pertes de données lors de l'ajout de valeurs Null au cache de données

Lorsque vous ajoutez des objets au cache de données, tous les objets mis en cache doivent être initialisés à une valeur non null avant que le document ne soit enregistré et fermé. Si l'un des objets mis en cache a une valeur null lorsque le document est enregistré et fermé, le runtime Visual Studio Tools pour Office supprimera automatiquement tous les objets du cache de données.

Si vous ajoutez un objet possédant une valeur null au cache de données en utilisant l'attribut CachedAttribute au moment du design, vous pouvez utiliser la classe ServerDocument pour initialiser les objets de données en mémoire cache avant que le document ne soit ouvert. Ceci s'avère utile si vous souhaitez initialiser les données en mémoire cache sur un serveur dépourvu de Word ou Excel, avant que le document ne soit ouvert par un utilisateur final. Pour plus d'informations, consultez Accès aux données des documents sur le serveur.

Comment les données en mémoire cache sont stockées dans le document

Lorsque vous mettez en cache un objet de données dans un document, l'exécution de Visual Studio Tools pour Office sérialise l'objet dans une chaîne XML stockée dans le document. La façon dont la chaîne XML est stockée dans le document dépend de la version de Microsoft Office avec laquelle votre solution fonctionne :

  • Dans les personnalisations pour Microsoft Office 2003, l'exécution de Visual Studio Tools pour Office stocke la chaîne XML dans le contrôle Runtime Storage. Le contrôle Runtime Storage est un contrôle ActiveX incorporé dans le document. Pour plus d'informations, consultez Vue d'ensemble du contrôle Runtime Storage.

  • Dans les personnalisations pour la version 2007 de Microsoft Office System, l'exécution de Visual Studio Tools pour Office stocke la chaîne XML dans une partie XML personnalisée du document. Pour plus d'informations, consultez Vue d'ensemble des parties XML personnalisées.

Voir aussi

Tâches

Comment : mettre en cache des données pour une utilisation hors connexion ou sur un serveur

Comment : mettre en cache par programme une source de données dans un document Office

Comment : arrêter par programme la mise en cache d'une source de données

Comment : mettre en cache des données dans un document protégé par un mot de passe

Procédure pas à pas : création d'une relation maître/détail à l'aide d'un groupe de données mis en cache

Historique des modifications

Date

Historique

Raison

Juillet 2008

Informations complémentaires à propos de la mise en cache de données dans des documents protégés par mot de passe.

Modifications de fonctionnalités dans le SP1.