Compartir a través de


Método Recordset.Edit (DAO)

Se aplica a: Access 2013, Office 2013

Copia el registro actual de un objeto Recordset actualizable al búfer de copia para su posterior edición.

Sintaxis

expression .Edit

expression Variable que representa un objeto Recordset.

Comentarios

Una vez utilizado el método Edit, los cambios realizados en los campos del registro activo se copian en el búfer de copia. Tras realizar los cambios que desee en el registro, utilice el método Update para guardar los cambios.

El registro activo sigue estando activo después de utilizar Edit.

Nota:

Si edita un registro y ejecuta luego cualquier operación para desplazarse a otro registro pero sin usar primero Update, los cambios se pierden sin advertencia. Además, si cierra recordset o termina el procedimiento que declara el objeto Recordset o el objeto Database o Connection principal, el registro editado se descarta sin advertencia.

El uso de Edit produce un error si:

  • No hay un registro activo.

  • El objeto Connection, Database o Recordset se abrió como de solo lectura.

  • No hay campos actualizables en el registro.

  • El objeto Database o Recordset se abrió para uso exclusivo de otro usuario (área de trabajo de Microsoft Access).

  • Otro usuario ha bloqueado la página que contiene el registro (área de trabajo de Microsoft Access).

En un área de trabajo de Microsoft Access, cuando el valor de la propiedad LockEdits del objeto Recordset es True (bloqueo pesimista) en un entorno multiusuario, el registro permanece bloqueado desde que se usa Edit hasta que finaliza la actualización. Si el valor de la propiedad LockEdits es False (bloqueo optimista), el registro se bloquea y se compara con el registro previo a la modificación antes de actualizarse en la base de datos. Si el registro cambió desde que se usó el método Edit, la operación Update produce un error en tiempo de ejecución si usa OpenRecordset sin especificar dbSeeChanges. De manera predeterminada, las bases de datos de ODBC e ISAM instalable conectadas al motor de base de datos de Microsoft Access usan siempre el bloqueo optimista.

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 a método AddNew, Delete o Edit en un área de trabajo de Microsoft Access.

Ejemplo

En este ejemplo se utiliza el método Edit para reemplazar los datos actuales con el nombre especificado. Se requiere el procedimiento EditName para que pueda ejecutarse este procedimiento.

    Sub EditX() 
     
     Dim dbsNorthwind As Database 
     Dim rstEmployees As Recordset 
     Dim strOldFirst As String 
     Dim strOldLast As String 
     Dim strFirstName As String 
     Dim strLastName As String 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     Set rstEmployees = _ 
     dbsNorthwind.OpenRecordset("Employees", _ 
     dbOpenDynaset) 
     
     ' Store original data. 
     strOldFirst = rstEmployees!FirstName 
     strOldLast = rstEmployees!LastName 
     
     ' Get new data for record. 
     strFirstName = Trim(InputBox( _ 
     "Enter first name:")) 
     strLastName = Trim(InputBox( _ 
     "Enter last name:")) 
     
     ' Proceed if the user entered something for both fields. 
     If strFirstName <> "" and strLastName <> "" Then 
     ' Update record with new data. 
     EditName rstEmployees, strFirstName, strLastName 
     
     With rstEmployees 
     ' Show old and new data. 
     Debug.Print "Old data: " & strOldFirst & _ 
     " " & strOldLast 
     Debug.Print "New data: " & !FirstName & _ 
     " " & !LastName 
     ' Restore original data because this is a 
     ' demonstration. 
     .Edit 
     !FirstName = strOldFirst 
     !LastName = strOldLast 
     .Update 
     End With 
     
     Else 
     Debug.Print _ 
     "You must input a string for first and last name!" 
     End If 
     
     rstEmployees.Close 
     dbsNorthwind.Close 
     
    End Sub 
     
    Sub EditName(rstTemp As Recordset, _ 
     strFirst As String, strLast As String) 
     
     ' Make changes to record and set the bookmark to keep 
     ' the same record current. 
     With rstTemp 
     .Edit 
     !FirstName = strFirst 
     !LastName = strLast 
     .Update 
     .Bookmark = .LastModified 
     End With 
     
    End Sub