Modification d'enregistrements
Remonter à Modification des données
Un ensemble de données doit être en mode dsEdit pour que l'application puisse modifier des enregistrements. Dans votre code, vous pouvez utiliser la méthode Edit pour mettre un ensemble de données en mode dsEdit si la propriété CanModify de l'ensemble de données, accessible seulement en lecture, est à True.
Quand un ensemble de données passe en mode dsEdit, il reçoit d'abord un événement BeforeEdit. Une fois le passage en mode édition réussi, l'ensemble de données reçoit un événement AfterEdit. En général, ces événements sont utilisés pour mettre à jour l'interface utilisateur afin qu'elle indique l'état en cours de l'ensemble de données. Si l'ensemble de données ne peut passer en mode édition pour une raison ou pour une autre, un événement OnEditError survient, grâce auquel vous pouvez informer l'utilisateur du problème ou essayer de corriger la situation qui a empêché l'ensemble de données de passer en mode édition.
Dans les fiches de votre application, certains contrôles orientés données pourront mettre automatiquement votre ensemble de données à l'état dsEdit si
- La propriété ReadOnly du contrôle vaut False (la valeur par défaut).
- La propriété AutoEdit de la source de données du contrôle vaut True.
- La propriété CanModify de l'ensemble de données vaut True.
Remarque : Même si un ensemble de données est à l'état dsEdit, la modification d'enregistrements peut échouer pour les bases de données SQL si l'utilisateur de votre application ne dispose pas des droits d'accès SQL appropriés.
Quand un ensemble de données se trouve en mode dsEdit, l'utilisateur peut modifier toutes les valeurs de champ de l'enregistrement qui apparaît dans les contrôles orientés données d'une fiche. Les contrôles orientés données, pour lesquels la modification est activée automatiquement, appellent Post quand l'utilisateur accomplit une action qui change la position du curseur (comme le déplacement vers un autre enregistrement dans une grille).
Si vous avez mis un composant navigateur dans votre fiche, l'utilisateur peut annuler les modifications en cliquant sur le bouton Annuler du navigateur. L'annulation des modifications renvoie l'ensemble de données à l'état dsBrowse.
Dans votre code, vous devez valider ou annuler les modifications en appelant les méthodes appropriées. Les modifications sont validées par l'appel de Post. Vous les annulez en appelant Cancel. Dans le code, les méthodes Edit et Post sont souvent utilisées conjointement. Par exemple,
with CustTable do begin Edit; FieldValues['CustNo'] := 1234; Post; end;
Table1->Edit(); Table1->FieldValues["CustNo"] = 1234; Table1->Post();
Dans l'exemple précédent, la première ligne du fragment de code place l'ensemble de données en mode dsEdit. La ligne suivante affecte la chaîne 1234 au champ CustNo de l'enregistrement en cours. Pour finir, la dernière ligne écrit (émet) l'enregistrement modifié. Si les mises à jour ne sont pas en mémoire cache, les modifications sont écrites en retour dans la base de données. Si les mises à jour sont en mémoire cache, les modifications sont écrites dans un tampon temporaire, où elles restent jusqu'à ce que la méthode ApplyUpdates de l'ensemble de données soit appelée.