Partager via


Recordset2.AddNew, méthode (DAO)

S’applique à : Access 2013, Office 2013

Crée un enregistrement pour un objet Recordset2 modifiable.

Syntaxe

expression .AddNew

Expression Variable qui représente un objet Recordset2 .

Remarques

La méthode AddNew permet de créer et d'ajouter un nouvel enregistrement dans l'objet Recordset2 nommé par le jeu d'enregistrements. Cette méthode attribue aux champs les valeurs par défaut ; si aucune valeur par défaut n'est spécifiée, elle leur attribue la valeur Null (valeur par défaut spécifiée pour un objet Recordset2 de type table).

Après avoir modifié le nouvel enregistrement, utilisez la méthode Update pour enregistrer les modifications et ajouter l'enregistrement à l'objet Recordset2. Aucune modification n'intervient dans la base de données tant que vous n'exécutez pas la méthode Update.

Remarque

[!REMARQUE] Si vous émettez une méthode AddNew puis que vous effectuez une opération qui atteint un autre enregistrement, mais sans utiliser Update, vos modifications sont perdues sans avertissement. Par ailleurs, si vous fermez l'objet Recordset2 ou que vous terminez la procédure qui déclare l'objet Recordset2 ou son objet Database, le nouvel enregistrement est ignoré sans avertissement.

Remarque

[!REMARQUE] Lorsque vous utilisez AddNew dans un espace de travail Microsoft Access et que le moteur de base de données doit créer une page pour y stocker l'enregistrement actif, le verrouillage de page est pessimiste. Si le nouvel enregistrement peut être casé dans une page existante, le verrouillage de page est optimiste.

Si vous n'avez pas atteint le dernier enregistrement de votre objet Recordset2, les enregistrements ajoutés aux tables de base par d'autres processus peuvent être inclus s'ils se trouvent après l'enregistrement actif. Toutefois, si vous ajoutez un enregistrement à votre propre objet Recordset2, l'enregistrement est visible dans l'objet Recordset2 et est inclus dans la table sous-jacente où il devient visible pour les nouveaux objets Recordset2.

La position du nouvel enregistrement dépend du type de l'objet Recordset2:

  • Dans un objet Recordset2 de type feuille de réponse dynamique, les enregistrements sont insérés à la fin de l'objet Recordset, quelles que soient les règles de tri ou de classement qui étaient actives au moment de l'ouverture de l'objet Recordset.

  • Dans un objet Recordset2 de type table dont la propriété Index a été définie, les enregistrements sont renvoyés à leur propre emplacement en fonction de l'ordre de tri. Si vous n'avez pas défini la propriété Index, les nouveaux enregistrements sont renvoyés à la fin de l'objet Recordset.

L'enregistrement qui était actif avant que vous n'utilisiez AddNew reste actif. Si vous voulez que le nouvel enregistrement devienne actif, vous pouvez définir la propriété Bookmark de sorte qu'elle indique le signet identifié par la propriété LastModified.

Remarque

[!REMARQUE] Pour ajouter, modifier ou supprimer un enregistrement, ce dernier doit être affecté d'un index unique dans la source de données sous-jacente. Si ce n’est pas le cas, une erreur « Autorisation refusée » se produira lors d’un appel à la méthode AddNew, Delete ou Edit dans un espace de travail Microsoft Access.

Exemple

Cet exemple utilise la méthode AddNew pour créer un nouvel enregistrement portant le nom spécifié. La fonction AddName est nécessaire à l'exécution de cette procédure.

    Sub AddNewX() 
     
     Dim dbsNorthwind As Database 
     Dim rstEmployees As Recordset2 
     Dim strFirstName As String 
     Dim strLastName As String 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     Set rstEmployees = _ 
     dbsNorthwind.OpenRecordset("Employees", dbOpenDynaset) 
     
     ' Get data from the user. 
     strFirstName = Trim(InputBox( _ 
     "Enter first name:")) 
     strLastName = Trim(InputBox( _ 
     "Enter last name:")) 
     
     ' Proceed only if the user actually entered something 
     ' for both the first and last names. 
     If strFirstName <> "" and strLastName <> "" Then 
     
     ' Call the function that adds the record. 
     AddName rstEmployees, strFirstName, strLastName 
     
     ' Show the newly added data. 
     With rstEmployees 
     Debug.Print "New record: " & !FirstName & _ 
     " " & !LastName 
     ' Delete new record because this is a demonstration. 
     .Delete 
     End With 
     
     Else 
     Debug.Print _ 
     "You must input a string for first and last name!" 
     End If 
     
     rstEmployees.Close 
     dbsNorthwind.Close 
     
    End Sub 
     
    Function AddName(rstTemp As Recordset2, _ 
     strFirst As String, strLast As String) 
     
     ' Adds a new record to a recordset using the data passed 
     ' by the calling procedure. The new record is then made 
     ' the current record. 
     With rstTemp 
     .AddNew 
     !FirstName = strFirst 
     !LastName = strLast 
     .Update 
     .Bookmark = .LastModified 
     End With 
     
    End Function