Compartir a través de


Método Recordset2.AddNew (DAO)

Se aplica a: Access 2013, Office 2013

Crea un nuevo registro para un objeto Recordset2 actualizable.

Sintaxis

expression .AddNew

Expresión Variable que representa un objeto Recordset2 .

Comentarios

Utilice el método AddNew para crear y agregar un nuevo registro al objeto Recordset2 designado por el conjunto de registros. Este método establece los campos en sus valores predeterminados y, si no especifica ningún valor, establece los campos en Null (valores predeterminados especificados para un objeto Recordset2 de tipo tabla).

Tras modificar el nuevo registro, use el método Update para guardar los cambios y agregar el registro a Recordset2. No se producen cambios en la base de datos hasta que use el método Update.

Nota:

[!NOTA] Si usa AddNew y ejecuta luego cualquier operación para desplazarse a otro registro pero sin usar Update, los cambios se pierden sin advertencia. Además, si cierra Recordset2 o termina el procedimiento que declara el objeto Recordset2 o su objeto Database, el nuevo registro se descarta sin advertencia.

Nota:

[!NOTA] Cuando utiliza AddNew en un área de trabajo de Microsoft Access y el motor de base de datos debe crear una nueva página para contener el registro actual, el bloqueo de página es pesimista. Si el nuevo registro cabe en una página existente, el bloqueo de página es optimista.

Si no se desplazó al último registro del objeto Recordset2, se pueden incluir los registros agregados a las tablas base por otros procesos si están colocados más allá del registro activo. Si agrega un registro a su propio objeto Recordset2, no obstante, el registro estará visible en Recordset2 y se incluirá en la tabla subyacente donde estará visible para cualquier nuevo objeto Recordset2.

La posición del nuevo registro depende del tipo de Recordset2:

  • En un objeto Recordset2 de tipo dynaset, los registros se insertan al final de Recordset, independientemente de las reglas de clasificación u ordenación que hubiera en vigor cuando se abrió Recordset.

  • En un objeto Recordset2 de tipo tabla cuya propiedad Index se definió, los registros se devuelven al lugar correspondiente según el criterio de ordenación. Si no definió la propiedad Index, los nuevos registros se devuelven al final de Recordset.

El registro que estaba activo antes de utilizar AddNew sigue estando activo. Si desea que el nuevo registro sea el activo, puede establecer la propiedad Bookmark en el marcador identificado por el valor de la propiedad LastModified.

Nota:

[!NOTA] Para agregar, editar o eliminar un registro, debe haber un índice único en el registro en el origen de datos subyacente. En caso contrario, se produce un error de "denegación de permiso" en la llamada al método AddNew, Delete o Edit en un área de trabajo de Microsoft Access.

Ejemplo

En este ejemplo se utiliza el método AddNew para crear un registro nuevo con el nombre especificado. Se requiere la función AddName para que pueda ejecutarse este procedimiento.

    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