Compartir a través de


Eliminar un registro de un objeto Recordset de DAO

Puede eliminar un registro existente en una tabla o un objeto Recordset de tipo dynaset mediante el método Delete . No puede eliminar registros de un objeto Recordset de tipo instantánea. El siguiente ejemplo de código elimina todos los registros duplicados de la tabla Shippers.

Sub DeleteDuplicateShippers() 
 
Dim dbsNorthwind As DAO.Database 
Dim rstShippers As DAO.Recordset 
Dim strSQL As String 
Dim strName As String 
 
On Error GoTo ErrorHandler 
 
   Set dbsNorthwind = CurrentDb 
   strSQL = "SELECT * FROM Shippers ORDER BY CompanyName, ShipperID" 
   Set rstShippers = dbsNorthwind.OpenRecordset(strSQL, dbOpenDynaset) 
 
   ' If no records in Shippers table, exit. 
   If rstShippers.EOF Then Exit Sub 
 
   strName = rstShippers![CompanyName] 
   rstShippers.MoveNext 
 
   Do Until rstShippers.EOF 
      If rstShippers![CompanyName] = strName Then 
         rstShippers.Delete 
      Else 
         strName = rstShippers![CompanyName] 
      End If 
      rstShippers.MoveNext 
   Loop 
 
Exit Sub 
 
ErrorHandler: 
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description 
End Function

Cuando se usa el método Delete , el motor de base de datos de Access elimina inmediatamente el registro actual sin advertencias ni avisos. La eliminación de un registro no hace que el siguiente registro se convierta automáticamente en el registro actual; Para pasar al siguiente registro, debe usar el método MoveNext . Tenga en cuenta que una vez que se ha movido del registro eliminado, no puede volver a él.

Si intenta obtener acceso a un registro después de eliminarlo en un objeto Recordset de tipo tabla, verá el error 3167, "Se eliminó el registro". En un dynaset, verá el error 3021, "Sin registro actual".

Si tiene un clon recordset colocado en el registro eliminado e intenta leer su valor, verá el error 3167 independientemente del tipo de objeto Recordset . Si se intenta utilizar un marcador para trasladarse a un registro eliminado, también se producirá el error 3167.

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.