Utilisation de plusieurs objets mise à jour - Index

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation du BDE - 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 plusieurs tables de base référencées dans l'ensemble de données de mise à jour doivent être mises à jour, vous devez utiliser plusieurs objets mise à jour, à raison d'un par table de base mise à jour. Comme l'objet UpdateObject du composant ensemble de données ne permet d'associer qu'un seul objet mise à jour à l'ensemble de données, vous devez associer chaque objet mise à jour à un ensemble de données en affectant à sa propriété DataSet le nom de l'ensemble de données.

Conseil :  Quand vous utilisez plusieurs objets mise à jour, vous pouvez utiliser TBDEClientDataSet au lieu de TClientDataSet avec un fournisseur externe. La raison est qu'il n'est pas nécessaire de définir la propriété UpdateObject de l'ensemble de données source.

La propriété DataSet des objets mise à jour n'est pas disponible dans l'inspecteur d'objets à la conception. Vous ne pouvez définir cette propriété qu'à l'exécution.

UpdateSQL1.DataSet := Query1;
UpdateSQL1->DataSet = Query1;

L'objet mise à jour utilise cet ensemble de données pour obtenir les valeurs de champs originales et modifiées pour la substitution de paramètres et, s'il s'agit d'un ensemble de données BDE, pour identifier la session et la base de données à utiliser lors de l'application des mises à jour. Pour que la substitution de paramètres fonctionne correctement, la propriété DataSet de l'objet mise à jour doit être l'ensemble de données qui contient les valeurs de champs mises à jour. Lors de l'utilisation d'un ensemble de données BDE pour mettre en mémoire cache les mises à jour, il s'agit de l'ensemble de données BDE lui-même. Lors de l'utilisation d'un ensemble de données client, c'est un ensemble de données client qui est fourni en paramètre au gestionnaire d'événement BeforeUpdateRecord.

Quand l'objet mise à jour n'a pas été assigné à la propriété UpdateObject de l'ensemble de données, ses instructions SQL ne sont pas automatiquement exécutées quand vous appelez ApplyUpdates. Pour mettre à jour les enregistrements, vous devez appeler manuellement l'objet mise à jour depuis un gestionnaire d'événement DBTables.OnUpdateRecord (si vous utilisez le BDE pour placer les mises à jour en mémoire cache). Dans ce gestionnaire d'événement, vous devez au moins entreprendre les actions suivantes :

  • Si vous utilisez un ensemble de données client pour placer les mises à jour en mémoire cache, vous devez vous assurer que les propriétés DatabaseName et SessionName des objets mise à jour sont définies comme les propriétés DatabaseName et SessionName de l'ensemble de données source.
  • Le gestionnaire d'événement doit appeler la méthode ExecSQL ou Apply de l'objet mise à jour. Cela invoque l'objet mise à jour pour chaque enregistrement nécessitant une mise à jour. Pour plus d'informations sur l'exécution des instructions de mise à jour, voir Exécution des instructions SQL.
  • Affectez au paramètre UpdateAction du gestionnaire d'événement la valeur uaApplied (OnUpdateRecord) ou au paramètre Applied la valeurTrue (BeforeUpdateRecord).

Si vous le désirez, vous pouvez effectuer une validation ou une modification des données, ou d'autres opérations qui dépendent de la mise à jour de chaque enregistrement.

Avertissement :  Si vous appelez la méthode ExecSQL ou Apply d'un objet mise à jour dans un gestionnaire d'événement OnUpdateRecord, assurez-vous de ne pas définir la propriété UpdateObject de l'ensemble de données à cet objet mise à jour. Sinon, le résultat sera une seconde tentative d'application de la mise à jour de chaque enregistrement.

Voir aussi

Rubriques