Présentation de l'utilisation d'un cache pour les mises à jour
Remonter à Utilisation d'un ensemble de données client pour mettre en cache les mises à jour
Pour utiliser les mises à jour en cache, les processus suivants doivent se produire successivement dans une application.
Indiquer les données que vous voulez modifier. La façon dont vous le ferez dépend du type d'ensemble de données client que vous utilisez :
- Si vous utilisez TClientDataSet, spécifiez le composant fournisseur qui représente les données que vous voulez modifier.
- Si vous utilisez un ensemble de données client associé à un mécanisme d'accès aux données particulier, vous devez
- Identifier le serveur de base de données en définissant la propriété DBConnection par un composant de connexion approprié.
- Indiquer les données que vous voulez voir en spécifiant les propriétés CommandText et CommandType. CommandType indique si CommandText est une instruction SQL à exécuter, le nom d'une procédure stockée ou le nom d'une table. Si CommandText est une requête ou une procédure stockée, utilisez la propriété Params pour extraire les paramètres d'entrée.
- Optionnellement, utilisez la propriété Options pour déterminer si les ensembles détails imbriqués et les données BLOB doivent figurer dans les paquets de données ou être extraits séparément, si les types spécifiques d'édition (insertions, modifications ou suppressions) sont désactivés, si une même mise à jour peut concerner plusieurs enregistrements du serveur et si les enregistrements de l'ensemble de données client sont rafraîchis lorsqu'il applique les mises à jour. Options est identique à la propriété Options du fournisseur. Par conséquent, vous pouvez définir des options non pertinentes ou inappropriées. Par exemple, il n'y a pas lieu d'inclure poIncFieldProps, car l'ensemble de données client n'extrait pas ses données d'un ensemble de données comportant des champs persistants. De même, il n'est pas souhaitable d'exclure poAllowCommandText, qui est inclus par défaut, car cela désactiverait la propriété CommandText, que l'ensemble de données client utilise pour spécifier quelles données il veut. Pour plus d'informations sur la propriété Options du fournisseur, voir Initialisation des options contrôlant les paquets de données.
Afficher et modifier les données, permettre l'insertion de nouveaux enregistrements et la suppression d'enregistrements existants. A la fois la copie originale de chaque enregistrement et toutes ses modifications sont stockées en mémoire. Ce processus est décrit dans Modification de données.
Extraire des enregistrements supplémentaires si nécessaire. Par défaut, les ensembles de données client extraient tous les enregistrements et les stockent en mémoire. Si un ensemble de données contient beaucoup d'enregistrements, ou des enregistrements avec des champs BLOB volumineux, vous souhaiterez probablement modifier ce comportement pour que l'ensemble de données clients n'extraie que les enregistrements requis pour l'affichage et recommence l'opération lorsque cela s'avère à nouveau nécessaire. Pour des détails sur la façon de contrôler le processus d'extraction des enregistrements, voir Extraction des données dans l'ensemble de données ou le document source.
Facultativement, actualiser les enregistrements. Plus le temps passe, plus d'autres utilisateurs risquent de modifier les données sur le serveur de la base de données. Cela peut provoquer un écart de plus en plus important entre les données de l'ensemble client et celles du serveur, et une augmentation des risques d'erreurs au moment où vous appliquerez les mises à jour. Pour réduire ce problème, vous pouvez rafraîchir les enregistrements n'ayant pas été modifiés. Voir Rafraîchissement des enregistrements pour plus de détails.
Appliquer les enregistrements du cache local à la base de données ou annuler les mises à jour. Pour chaque enregistrement écrit dans la base de données, un événement BeforeUpdateRecord est déclenché. Si une erreur se produit lors de l'écriture d'un enregistrement dans la base de données, un événement OnUpdateError permet à l'application de corriger cette erreur, si possible, et de poursuivre la mise à jour. Lorsque les mises à jour sont terminées, toutes les mises à jour appliquées avec succès sont supprimées du cache local. Pour plus d'informations sur l'application des mises à jour dans la base de données, voir Mise à jour des enregistrements.
Au lieu d'appliquer les mises à jour, une application peut annuler les mises à jour, en vidant le journal de modifications sans les écrire dans la base de données. Vous pouvez annuler les mises à jour en appelant la méthode CancelUpdates. Tous les enregistrements supprimés dans le cache sont "dé-supprimés", les enregistrements modifiés sont ramenés à leurs valeurs originelles, et les enregistrements nouvellement insérés disparaissent tout simplement.