Ajout de nouveaux enregistrements

De RAD Studio
Aller à : navigation, rechercher

Remonter à Modification des données


Un ensemble de données doit être en mode dsInsert pour que l'application puisse ajouter de nouveaux enregistrements. Dans le code, vous pouvez utiliser la méthode Insert ou Append pour mettre un ensemble de données en mode dsInsert 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 dsInsert, il reçoit d'abord un événement BeforeInsert. Une fois le passage en mode insertion réussi, l'ensemble de données reçoit d'abord un événement OnNewRecord, puis un événement AfterInsert. Vous pouvez utiliser ces événements, par exemple, pour fournir les valeurs initiales des enregistrements que vous venez d'insérer.

 procedure TForm1.OrdersTableNewRecord(DataSet: TDataSet);
 begin
   DataSet.FieldByName('OrderDate').AsDateTime := Date;
 end;
 void __fastcall TForm1::OrdersTableNewRecord(TDataSet *DataSet)
 {
   DataSet->FieldByName("OrderDate")->AsDateTime = Date();
 }

Les contrôles orientés données, pour lesquels l'insertion 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). Vous devez sinon appeler Post dans votre code.

  • La propriété ReadOnly du contrôle vaut False (la valeur par défaut) et
  • La propriété CanModify de l'ensemble de données vaut True.

Remarque :  Même si un ensemble de données est à l'état dsInsert, l'ajout 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.

Post écrit le nouvel enregistrement dans la base de données ou, si vous utilisez les mises à jour en mémoire cache, Post écrit l'enregistrement dans un cache en mémoire. Pour écrire les insertions mises en mémoire cache et les ajouter à la base de données, appelez la méthode ApplyUpdates de l'ensemble de données.

Insert ouvre un nouvel enregistrement vide avant l'enregistrement en cours, puis positionne le curseur sur ce nouvel enregistrement de façon à que les valeurs de champ puissent être entrées par l'utilisateur ou par le code de votre application.

Quand une application appelle Post (ou ApplyUpdates si vous utilisez les mises à jour en mémoire cache), le nouvel enregistrement inséré peut être écrit comme suit dans le journal des modifications :

Insertion d'enregistrements

Insert ouvre un nouvel enregistrement vide à la fin de l'ensemble de données, en faisant en sorte que l'enregistrement vide devienne l'enregistrement en cours afin que les valeurs de champ de l'enregistrement puissent être entrées par l'utilisateur ou par le code de votre application.

Quand une application appelle Post (ou ApplyUpdates si vous utilisez les mises à jour en mémoire cache), le nouvel enregistrement ajouté peut être écrit comme suit dans le journal des modifications :

  • Pour les tables Paradox et dBASE indexées, l'enregistrement est inséré dans l'ensemble de données à une position déterminée par l'index.
  • Pour les tables Paradox et dBASE non indexées, l'enregistrement est inséré dans l'ensemble de données à sa position actuelle.
  • Pour les bases de données SQL, l'emplacement physique de l'insertion est spécifique à l'implémentation. Si la table est indexée, l'index est mis à jour avec les données du nouvel enregistrement.

Ajout d'enregistrements à la fin

Append ouvre un nouvel enregistrement vide à la fin de l'ensemble de données, en faisant en sorte que l'enregistrement vide devienne l'enregistrement en cours afin que les valeurs de champ de l'enregistrement puissent être entrées par l'utilisateur ou par le code de votre application.

Quand une application appelle Post (ou ApplyUpdates si vous utilisez les mises à jour en mémoire cache), le nouvel enregistrement ajouté peut être écrit comme suit dans le journal des modifications :

  • Pour les tables Paradox et dBASE indexées, l'enregistrement est inséré dans l'ensemble de données à une position déterminée par l'index.
  • Pour les tables Paradox et dBASE non indexées, l'enregistrement est ajouté à la fin de l'ensemble de données.
  • Pour les bases de données SQL, l'emplacement physique de l'ajout est spécifique à l'implémentation. Si la table est indexée, l'index est mis à jour avec les données du nouvel enregistrement.

Voir aussi

Exemples de code