Application des mises à jour

De RAD Studio
Aller à : navigation, rechercher

Remonter à Mise à jour des enregistrements


Les changements apportés à la copie locale des données de l'ensemble client ne sont transmis au serveur de base de données (ou au document XML) que lorsque l'application client appelle la méthode ApplyUpdates. ApplyUpdates prend les modifications dans le journal de modifications et les envoie au fournisseur sous forme d’un paquet de données (appelé Delta). Notez que, lors de l'utilisation de la majorité des ensembles de données client, le fournisseur est interne à l'ensemble de données client.

ApplyUpdates accepte un paramètre unique, MaxErrors, qui indique le nombre maximal d'erreurs que le fournisseur peut tolérer avant de mettre fin au processus de mise à jour. Si MaxErrors est égal à 0, tout le processus de mise à jour prend fin dès qu'une erreur de mise à jour se produit. Aucune modification n'est écrite dans la base de données et le journal de modifications de l'ensemble de données client reste inchangé. Si MaxErrors est égal à -1, un nombre quelconque d'erreurs est toléré et le journal de modifications contient tous les enregistrements n'ayant pas pu être appliqués avec succès. Si MaxErrors a une valeur positive et qu'il se produit davantage d'erreurs que le nombre autorisé par MaxErrors, toutes les mises à jour sont annulées. S'il se produit moins d'erreurs que le nombre spécifié par MaxErrors, tous les enregistrements ayant été appliqués avec succès sont automatiquement effacés du journal de modifications de l'ensemble de données client.

ApplyUpdates renvoie le nombre réel d'erreurs rencontrées, qui est toujours inférieur ou égal à MaxErrors plus un. Cette valeur de retour indique le nombre d'enregistrements qui n'ont pas pu être écrits dans la base de données.

La méthode ApplyUpdates de l'ensemble de données client effectue les opérations suivantes :

  • Elle appelle indirectement la méthode ApplyUpdates du fournisseur. La méthode ApplyUpdates du fournisseur écrit les mises à jour dans la base de données, dans l'ensemble de données source ou dans le document XML, et tente de corriger les erreurs rencontrées. Les enregistrements qu'elle ne peut appliquer à cause de conditions d'erreurs sont renvoyés à l'ensemble de données client.
  • La méthode ApplyUpdates de l'ensemble de données client essaie alors de concilier ces enregistrements problématiques en appelant la méthode Reconcile. Reconcile est une routine de gestion d'erreurs qui appelle le gestionnaire d'événements DBClient.OnReconcileError. Vous devez coder le gestionnaire d'événements OnReconcileError pour corriger les erreurs. Pour de plus amples détails sur l'utilisation de OnReconcileError, voir Conciliation des erreurs de mise à jour.
  • Enfin, Reconcile retire du journal de modifications celles appliquées avec succès et met à jour Data avec les nouveaux enregistrements mis à jour. Quand Reconcile est terminée, ApplyUpdates indique le nombre d'erreurs survenues.

Avertissement : Dans certains cas, le fournisseur ne peut déterminer comment appliquer les mises à jour (par exemple, lors de mises à jour à partir d'une procédure stockée ou d'une jointure multitable). Les ensembles de données client et les composants fournisseur génèrent des événements vous permettant de gérer de telles situations. Voir Intervention pendant l'application des mises à jour pour de plus amples détails.

Conseil : Si le fournisseur se trouve sur un serveur d'applications sans état, vous voudrez peut-être échanger avec lui des informations d'état persistantes, avant ou après l'application des mises à jour. TClientDataSet reçoit un événement DBClient.BeforeApplyUpdates avant que les mises à jour ne soient envoyées, ce qui vous permet d'envoyer au serveur des informations d'état persistantes. Une fois que les mises à jour sont appliquées (mais avant le processus de conciliation), TClientDataSet reçoit un événement DBClient.AfterApplyUpdates, ce qui vous permet de répondre à toute information d'état persistante renvoyée par le serveur d'applications.

Voir aussi

                Conciliation des erreurs de mise à jour
                Comment répondre aux demandes de mise à jour des clients