FireDAC.Comp.DataSet.TFDDataSet.OnReconcileError
Delphi
property OnReconcileError: TFDReconcileErrorEvent read FOnReconcileError write FOnReconcileError;
C++
__property TFDReconcileErrorEvent OnReconcileError = {read=FOnReconcileError, write=FOnReconcileError};
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
event | public | FireDAC.Comp.DataSet.pas FireDAC.Comp.DataSet.hpp |
FireDAC.Comp.DataSet | TFDDataSet |
Description
Se déclenche quand un ensemble de données doit concilier une mise à jour à un enregistrement qui n'a pu être appliquée.
Utilisez le gestionnaire d'événement OnReconcileError pour répondre à des conditions d'erreur qui se produisent quand la méthode ApplyUpdates a appliqué des modifications aux enregistrements de la base de données. Le gestionnaire d'événement OnReconcileError est appelé par la méthode Reconcile.
Lors de l'invocation de Reconcile, l'ensemble de données boucle à travers tous les enregistrements avec les objets exception associés. Pour chacun de ces enregistrements, il appelle le gestionnaire d'événement OnReconcileError. Le gestionnaire d'événement obtient :
- E -- la référence à l'objet exception. Voir la rubrique Gestion des erreurs pour obtenir des informations sur la façon de travailler avec les objets exception.
- UpdateKind -- le type de mise à jour de l'enregistrement en cours. Il peut prendre l'une des valeurs suivantes :
rsInserted, rsDeleted, rsModified, rsUnchanged
.
Après la gestion de l'erreur, le gestionnaire d'événement doit définir l'argument Action. La valeur par défaut est raMerge
. Les valeurs possibles sont :
Action |
Description |
---|---|
|
Ignore l'enregistrement en cours. |
|
Quitte l'appel de Reconcile. |
|
Efface l'état d'erreur de l'enregistrement en cours, afin que les modifications de l'enregistrement deviennent l'état initial de cet enregistrement. En d'autres termes, il fusionne les modifications au cache des enregistrements de l'ensemble de données. |
|
Efface l'état d'erreur de l'enregistrement en cours. En d'autres termes, il marque l'enregistrement comme correctement appliqué. |
|
Annule les modifications de l'enregistrement en cours. |
|
Annule les modifications de l'enregistrement en cours et relit les valeurs d'enregistrement à partir de la base de données. |
Le gestionnaire d'événement peut analyser les valeurs de champs d'origine et en cours, en lisant les propriétés OldValue et NewValue. L'application peut aussi mettre à jour la valeur du champ en cours, définir Action sur raCorrect
, et rappeler plus tard ApplyUpdates.
Exemple
procedure TForm1.FDMemTable1ReconcileError(DataSet: TFDDataSet; E: EFDException;
UpdateKind: TFDDatSRowState; var Action: TFDDAptReconcileAction);
begin
if (UpdateKind = rsInserted) and (E is EFDDBEngineException) and (EFDDBEngineException(E).Kind = ekUKViolated) then begin
DataSet.FieldByName('ID').AsInteger := GetNextFreeID;
Action := raCorrect;
end;
end;