Appel de la méthode Apply

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation de plusieurs objets mise à 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.

La méthode Apply d'un composant mise à jour applique manuellement les mises à jour pour l'enregistrement en cours. Le processus comprend deux étapes :

  1. Les valeurs de champs initiale et modifiée de l'enregistrement sont liées aux paramètres de l'instruction SQL approprié.
  2. L'instruction SQL est exécutée.

Appelez la méthode Apply pour appliquer la mise à jour de l'enregistrement en cours dans la mémoire cache de mise à jour. Apply est souvent appelée depuis un gestionnaire d'événement OnUpdateRecord de l'ensemble de données ou depuis un gestionnaire d'événement BeforeUpdateRecord d'un fournisseur.

Avertissement :  Si vous utilisez la propriété UpdateObject de l'ensemble de données pour associer ensemble de données et objet mise à jour, Apply est appelée automatiquement. Dans ce cas, n'appelez pas Apply dans un gestionnaire d'événement OnUpdateRecord pour éviter une seconde tentative d'application de la mise à jour de l'enregistrement en cours.

Les gestionnaires d'événements OnUpdateRecord indiquent le type de mise à jour qui doit être appliqué avec un paramètre UpdateKind de type TUpdateKind. Vous devez passer ce paramètre à la méthode Apply pour indiquer l'instruction SQL à utiliser. L'exemple suivant illustre ceci avec un gestionnaire d'événement BeforeUpdateRecord :

procedure TForm1.BDEClientDataSet1BeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet;
          DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var Applied: Boolean);
begin
  with UpdateSQL1 do
  begin
    DataSet := DeltaDS;
    DatabaseName := (SourceDS as TDBDataSet).DatabaseName;
    SessionName := (SourceDS as TDBDataSet).SessionName;
    Apply(UpdateKind);
    Applied := True;
  end;
end;
void __fastcall TForm1::BDEClientDataSet1BeforeUpdateRecord(TObject *Sender,
   TDataSet *SourceDS, TCustomClientDataSet *DeltaDS, TUpdateKind UpdateKind, bool &Applied)
{
  UpdateSQL1->DataSet = DeltaDS;
  TDBDataSet *pSrcDS = dynamic_cast<TDBDataSet *>(SourceDS);
  UpdateSQL1->DatabaseName = pSrcDS->DatabaseName;
  UpdateSQL1->SessionName = pSrcDS->SessionName;
  UpdateSQL1->Apply(UpdateKind);
  Applied = true;
}

Voir aussi