Modification des paquets delta avant la mise à jour de la base de données
Remonter à Comment répondre aux demandes de mise à jour des clients
Avant qu'un fournisseur d'ensemble de données n'applique les mises à jour à la base de données, il génère un événement OnUpdateData. Le gestionnaire d'événement OnUpdateData reçoit en paramètre une copie du paquet Delta. C'est un ensemble de données client.
Dans le gestionnaire d'événement OnUpdateData, vous pouvez utiliser toutes les propriétés et méthodes de l'ensemble de données client pour modifier le paquet Delta avant de l'écrire dans l'ensemble de données. Une propriété s'avère particulièrement utile : UpdateStatus. UpdateStatus indique le type de modification que représente l'enregistrement en cours dans le paquet delta. Elle peut prendre l'une des valeurs énumérées dans le tableau suivant :
Valeurs de UpdateStatus :
Valeur | Description |
---|---|
usUnmodified |
Le contenu de l'enregistrement n'a pas été modifié. |
usModified |
Le contenu de l'enregistrement a été modifié. |
usInserted |
L'enregistrement a été inséré. |
usDeleted |
L'enregistrement a été supprimé. |
Le gestionnaire d'événement OnUpdateData suivant insère la date en cours dans chaque nouvel enregistrement inséré dans la base de données :
procedure TMyDataModule1.Provider1UpdateData(Sender: TObject; DataSet: TCustomClientDataSet); begin with DataSet do begin First; while not Eof do begin if UpdateStatus = usInserted then begin Edit; FieldByName('DateCreated').AsDateTime := Date; Post; end; Next; end; end;
void __fastcall TMyDataModule1::Provider1UpdateData(TObject *Sender, TCustomClientDataSet *DataSet) { DataSet->First(); while (!DataSet->Eof) { if (DataSet->UpdateStatus == usInserted) { DataSet->Edit(); DataSet->FieldByName("DateCreated")->AsDateTime = Date(); DataSet->Post(); } DataSet->Next(); } }