Utilisation d'objets mise à jour pour mettre à jour un ensemble de données

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation du BDE pour placer en mémoire cache les mises à jour - Index

Remarque : Le moteur de base de données Borland (BDE, Borland Database Engine) a été déprécié. Il ne sera donc pas amélioré. Par exemple, le BDE ne prendra jamais en charge Unicode. Vous ne devriez pas entreprendre de nouveaux développements avec BDE. Prévoyez plutôt de migrer vos applications de bases de données existantes de BDE vers dbExpress. Pour plus d'informations relatives à la migration de BDE vers dbExpress, voir http://www.embarcadero.com/rad-in-action/migration-upgrade-center.

Quand l'ensemble de données BDE représente une procédure stockée ou une requête non "dynamique", il n'est pas possible d'appliquer les mises à jour directement depuis l'ensemble de données. De tels ensembles de données peuvent aussi provoquer un problème quand vous utilisez un ensemble de données client pour placer les mises à jour en mémoire cache. Que vous utilisiez le BDE ou un ensemble de données client pour placer les mises à jour en mémoire cache, vous devez gérer ces problèmes en utilisant un objet mise à jour.

Pour mettre à jour un ensemble de données

  1. Si vous utilisez un ensemble de données client, utilisez un composant fournisseur externe avec TClientDataSet plutôt que TBDEClientDataSet. Vous pouvez ainsi définir la propriété UpdateObject de l'ensemble de données BDE source (étape 3).
  2. Ajoutez un composant Bde.DBTables.TUpdateSQL au même module de données que celui de l'ensemble de données BDE.
  3. Affectez à la propriété UpdateObject du composant ensemble de données BDE le composant TUpdateSQL dans le module de données.
  4. Spécifiez les instructions SQL nécessaires pour effectuer les mises à jour en utilisant les propriétés ModifySQL, InsertSQL et DeleteSQL de l'objet mise à jour. Vous pouvez utiliser l'éditeur de mise à jour SQL pour composer ces instructions.
  5. Fermez l'ensemble de données.
  6. Affectez à la propriété CachedUpdates du composant ensemble de données la valeur True ou liez l'ensemble de données à l'ensemble de données client à l'aide d'un fournisseur d'ensemble de données.
  7. Rouvrez l'ensemble de données.

Remarque :  Parfois, vous devez utiliser plusieurs objets mise à jour. Par exemple, lors de la mise à jour d'une jointure multitable ou d'une procédure stockée qui représente des données venant de plusieurs ensembles de données, vous devez fournir un objet TUpdateSQL pour chaque table à mettre à jour. Quand vous utilisez plusieurs objets mise à jour, vous ne pouvez pas associer simplement l'objet mise à jour à l'ensemble de données en définissant la propriété UpdateObject. Vous devez plutôt appeler manuellement l'objet mise à jour depuis un gestionnaire d'événement Bde.DBTables.TBDEDataSet.OnUpdateRecord (si vous utilisez le BDE pour placer les mises à jour en mémoire cache).

L'objet mise à jour encapsule en réalité trois composants TQuery. Chacun de ces composants requête effectue une tâche de mise à jour unique. Le premier fournit une instruction SQL UPDATE pour modifier les enregistrements existants ; le second composant fournit une instruction INSERT pour ajouter de nouveaux enregistrements à une table ; le troisième fournit une instruction DELETE pour supprimer des enregistrements d'une table.

Quand vous placez un composant mise à jour dans un module de données, vous ne voyez pas les composants requête qu'il encapsule. Ils sont créés à l'exécution par le composant mise à jour à partir de trois propriétés de mise à jour pour lesquelles vous fournissez des instructions SQL :

A l'exécution, quand le composant de mise à jour est utilisé pour appliquer les mises à jour, il :

  1. Sélectionne une instruction SQL à exécuter selon que l'enregistrement en cours est modifié, inséré ou supprimé.
  2. Fournit les valeurs de paramètre aux instructions SQL.
  3. Prépare et exécute l'instruction SQL pour effectuer la mise à jour spécifiée.

Voir aussi