Eliminar registros con recordset
Finalmente me he animado a intentar utilizar los recordset pero no consigo que funcionen.
Concretamente lo que quiero hacer es borrar de una tabla llamada "LEADATRIBUTO" los registros que cumplan con una determinada condición (concretamente aquellos cuyo ID_LEAD sea igual al ID_LEAD del formulario desde el que lo ejecuto)
Al final el problema lo he resuelto usando una sentencia SQL de las de toda la vida, que sí funciona a la perfección:
DoCmd.RunSQL "Delete * FROM LEADATRIBUTO WHERE ID_LEAD=" & Me.ID_LEAD & ";"
Sin embargo me queda la duda de qué estoy haciendo mal con la parte del recordset.
He fusilado un código que encontré por ahí y lo he adaptado a lo mío pero no me funciona; es una cosa extrañísima, en algunos registros sólo me borra uno de los registros coincidentes, con lo que tengo que ejecutarlo tantas veces como registros haya en la tabla LEADATRIBUTO y en otros casos directamente no hace nada de nada.
¿Qué es lo que está mal en este código?
Dim Buscadb As Database
Dim Buscaws As Workspace
Dim Busca As Recordset
Set Buscaws = DBEngine.Workspaces(0)
Set Buscadb = Buscaws.Databases(0)
Set Busca = Buscadb.OpenRecordset("LEADATRIBUTO")
If Busca.EOF = False Then
Busca.MoveFirst
While Busca.EOF = False
If Me.ID_LEAD = Busca![ID_LEAD] Then
Busca.Delete
Busca.MoveLast
End If
Busca. MoveNext
Wend
End If
Concretamente lo que quiero hacer es borrar de una tabla llamada "LEADATRIBUTO" los registros que cumplan con una determinada condición (concretamente aquellos cuyo ID_LEAD sea igual al ID_LEAD del formulario desde el que lo ejecuto)
Al final el problema lo he resuelto usando una sentencia SQL de las de toda la vida, que sí funciona a la perfección:
DoCmd.RunSQL "Delete * FROM LEADATRIBUTO WHERE ID_LEAD=" & Me.ID_LEAD & ";"
Sin embargo me queda la duda de qué estoy haciendo mal con la parte del recordset.
He fusilado un código que encontré por ahí y lo he adaptado a lo mío pero no me funciona; es una cosa extrañísima, en algunos registros sólo me borra uno de los registros coincidentes, con lo que tengo que ejecutarlo tantas veces como registros haya en la tabla LEADATRIBUTO y en otros casos directamente no hace nada de nada.
¿Qué es lo que está mal en este código?
Dim Buscadb As Database
Dim Buscaws As Workspace
Dim Busca As Recordset
Set Buscaws = DBEngine.Workspaces(0)
Set Buscadb = Buscaws.Databases(0)
Set Busca = Buscadb.OpenRecordset("LEADATRIBUTO")
If Busca.EOF = False Then
Busca.MoveFirst
While Busca.EOF = False
If Me.ID_LEAD = Busca![ID_LEAD] Then
Busca.Delete
Busca.MoveLast
End If
Busca. MoveNext
Wend
End If
1 Respuesta
Respuesta de Angel Navales
1