Validation des données

De RAD Studio
Aller à : navigation, rechercher

Remonter à Modification des données


Quand vous avez fini de modifier un enregistrement, vous devez appeler la méthode Post pour écrire effectivement les modifications. La méthode Post se comporte de façon différente selon l'état dans lequel se trouve l'ensemble de données et selon que vous mettiez ou non les mises à jour en mémoire cache.

  • Si vous ne mettez pas les mises à jour en mémoire cache, et que l'ensemble de données est dans l'état dsEdit ou dsInsert, Post écrit l'enregistrement en cours dans la base de données et remet l'ensemble de données dans l'état dsBrowse.
  • Si vous ne mettez pas les mises à jour en mémoire cache, et que l'ensemble de données est dans l'état dsEdit ou dsInsert, Post écrit l'enregistrement en cours dans un cache interne et remet l'ensemble de données dans l'état dsBrowse. Les modifications ne sont écrites dans la base de données que lorsque vous appelez ApplyUpdates.
  • Si l'ensemble de données est dans l'état dsSetKey, Post le met dans l'état dsBrowse.

Quel que soit l'état initial de l'ensemble de données, Post génère des événements BeforePost et AfterPost, avant et après l'écriture des modifications en cours. Vous pouvez utiliser ces événements pour mettre à jour l'interface utilisateur, ou empêcher l'ensemble de données de valider les modifications en appelant la procédure Abort. Si l'appel à Post échoue, l'ensemble de données reçoit un événement OnPostError, dans lequel vous pouvez informer l'utilisateur du problème ou essayer de le corriger.

L'émission peut se faire, soit explicitement soit implicitement, comme partie intégrante d'une autre procédure. Quand une application quitte l'enregistrement en cours, Post est appelée implicitement. Les appels aux méthodes First, Next, Prior et Last effectuent une validation (Post) si la table est en mode dsEdit ou dsInsert. En outre, les méthodes Append et Insert valident implicitement toute donnée en suspens.

Avertissement :  La méthode Close n'appelle pas implicitement Post. Vous devez faire appel à l'événement DB.BeforeClose pour émettre explicitement toutes les modifications en suspens.

Voir aussi