Indication des enregistrements modifiés

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation d'ensembles de données client - Index

Lorsque l'utilisateur modifie un ensemble de données client, il vous semblera sans doute utile de fournir le feedback des modifications effectuées. Cela sera particulièrement utile si vous voulez autoriser l'utilisateur à défaire certaines modifications en naviguant jusqu'à elles et en cliquant sur un bouton "Défaire" par exemple.

La méthode UpdateStatus et les propriétés StatusFilter sont utiles pour fournir un feedback sur les mises à jour qui se sont produites :

UpdateStatus indique quel type de mise à jour s'est éventuellement produit sur l'enregistrement en cours. Cela peut être l'une des valeurs suivantes :

  • usUnmodified indique que l'enregistrement en cours est inchangé.
  • usModified indique que l'enregistrement en cours a été modifié.
  • usInserted indique qu'un enregistrement a été inséré par l'utilisateur.
  • usDeleted indique qu'un enregistrement a été supprimé par l'utilisateur.

StatusFilter contrôle quels types de mises à jour sont visibles dans le journal de modifications. StatusFilter fonctionne sur les enregistrements en cache comme les filtres sur des données standard. StatusFilter est un ensemble qui peut inclure n'importe quelle combinaison des valeurs suivantes :

  • usUnmodified indique un enregistrement non modifié.
  • usModified indique un enregistrement modifié.
  • usInserted indique un enregistrement inséré.
  • usDeleted indique un enregistrement supprimé.

Par défaut, StatusFilter est l'ensemble [usModified, usInserted, usUnmodified]. Vous pouvez ajouter usDeleted à cet ensemble afin de fournir le feedback des enregistrements supprimés en plus.

Remarque :  UpdateStatus et StatusFilter sont également utiles dans les gestionnaires des événements BeforeUpdateRecord et OnReconcileError. Pour plus d'informations sur BeforeUpdateRecord, voir Intervention pendant l'application des mises à jour. Pour plus d'informations sur OnReconcileError, voir Conciliation des erreurs de mise à jour.

L'exemple suivant montre comment fournir du feedback sur l'état de mise à jour des enregistrements, en utilisant la méthode UpdateStatus. Il suppose que vous avez changé la propriété StatusFilter afin qu'elle comprenne usDeleted, ce qui permet aux enregistrements supprimés de rester visibles dans l'ensemble de données. Il suppose de plus que vous avez ajouté un champ calculé à l'ensemble de données, appelé "Status".



 procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);
 begin
   with ClientDataSet1 do begin
     case UpdateStatus of
       usUnmodified: FieldByName('Status').AsString := '';
       usModified: FieldByName('Status').AsString := 'M';
       usInserted: FieldByName('Status').AsString := 'I';
       usDeleted: FieldByName('Status').AsString := 'D';
     end;
   end;
 end;



 void __fastcall TForm1::ClientDataSet1CalcFields(TDataSet *DataSet)
 {
   switch (DataSet->UpdateStatus())
   {
     case usUnmodified:
       ClientDataSet1Status->Value = NULL; break;
     case usModified:
       ClientDataSet1Status->Value = "M"; break;
     case usInserted:
       ClientDataSet1Status->Value = "I"; break;
     case usDeleted:
       ClientDataSet1Status->Value = "D"; break;
   }
 }



Voir aussi