Partager via


Recordset.AddNew, méthode (DAO)

S’applique à : Access 2013, Office 2013

Crée un enregistrement pour un objet Recordset actualisable.

Syntaxe

expression .AddNew

expression Variable représentant un objet Recordset.

Remarques

Utilisez la méthode AddNew pour créer et ajouter un nouvel enregistrement pour l’objet Recordset, nommé en fonction du jeu d’enregistrements. Cette méthode affecte les valeurs par défaut aux champs et, si aucune valeur par défaut n’est spécifiée, elle leur affecte des valeurs Null (valeurs par défaut spécifiées pour un objet Recordset 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 Recordset. Aucune modification n'est implémentée dans la base de données tant que vous n'avez pas utilisé la méthode Update.

Remarque

[!REMARQUE] Si vous exécutez une méthode AddNew, puis que vous accédez à un autre enregistrement à la suite d'une autre opération sans avoir préalablement appelé la méthode Update, vous perdez toutes vos modifications sans avertissement. En outre, si vous fermez l'objet Recordset ou mettez un terme à la procédure qui déclare l'objet Recordset ou son objet Database, le nouvel enregistrement est supprimé 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 est ajouté à une page existante, le verrouillage de page est de type optimiste.

Si vous n'avez pas accédé au dernier enregistrement de votre objet Recordset, les enregistrements ajoutés aux tables de base par d'autres processus peuvent être inclus s'ils sont placés après l'enregistrement actif. Toutefois, si vous ajoutez un enregistrement à votre propre objet Recordset, l'enregistrement est visible dans l'objet Recordset et inclus dans la table sous-jacente, où il sera visible pour tout nouvel objet Recordset.

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

  • Dans un objet Recordset de type feuille de réponse dynamique, les enregistrements sont insérés à la fin de l'objet Recordset, indépendamment des règles de tri ou d'ordre en vigueur lors de l'ouverture de l'objet Recordset.

  • Dans un objet Recordset de type table dont la propriété Index a été définie, les enregistrements sont renvoyés à l'emplacement adéquat 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 Recordset 
     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 Recordset, _ 
     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