Dans le gestionnaire d'événements AfterPost pour un ClientDataSet, j'ai besoin des informations si la fonction ApplyUpdates de l'enregistrement en cours effectue une mise à jour ou une insertion. L'événement AfterPost sera exécuté pour les enregistrements nouveaux et mis à jour, et je ne souhaite pas déclarer une nouvelle variable Flag pour indiquer si une opération 'update' ou 'insert' est en cours.Comment puis-je détecter si ApplyUpdates va insérer ou mettre à jour des données?
code Exemple:
procedure TdmMain.QryTestAfterPost(DataSet: TDataSet);
begin
if IsInserting(QryTest) then
// ShowMessage('Inserting')...
else
// ShowMessage('Updating');
QryTest.ApplyUpdates(-1);
end;
L'application écrire un journal dans la méthode AfterPost, après ApplyUpdate terminée. Donc cette méthode est l'endroit le plus proche de l'action, je préférerais une solution qui puisse être complètement insérée dans ce gestionnaire d'évènement.
Comment pourrais-je implémenter la fonction IsInserting, en utilisant des informations dans l'instance ClientDataSet QryTest?
Modifier: Je vais essayer ClientDataSet.UpdateStatus qui est expliqué here.
Que comptez-vous faire? Faire des validations, mettre à jour l'interface utilisateur ou manipuler des données? – zendar
L'application écrit un journal dans la méthode AfterPost, une fois que ApplyUpdate est terminée. Donc cette méthode est l'endroit le plus proche de l'action, je préférerais une solution qui puisse être complètement insérée dans ce gestionnaire d'évènement. Vérification du tableau Delta ici semble être le moyen le plus facile. – mjn
C'est le meilleur endroit si vous vous connectez par utilisateur, côté client. Si vous voulez un journal central pour tous les utilisateurs, un meilleur endroit serait du côté serveur dans l'événement AfterApplyUpdates sur TDataSetProvider. – zendar