Ejecutar una macro después de borrar un registro

Tengo un formulario donde introduzco autores. Para tener un control de los autores que no tienen asociados libros, he creado otro formulario para que me diga si hay o no, y los pueda borrar. Bien, pues quiero inhabilitar el botón que da acceso a ese segundo formulario cuando no haya autores "vacíos".

Para ello, he creado dos funciones:

Public Function ContarLimpiarAutores() As String
    Dim rst As DAO.Recordset
    Dim strSQL As String
    strSQL = "SELECT TAutores.Autor, DCount('[Autor]','[TLibros]','[TLibros].[Autor]=' & [TAutores].[ID]) AS Veces" _
                & " FROM TAutores" _
                & " WHERE (((DCount('[Autor]','[TLibros]','[TLibros].[Autor]=' & [TAutores].[ID]))=0))"
    Set rst = CurrentDb.OpenRecordset(strSQL) 'Aquí pondrías el select completo
    If rst.RecordCount > 0 Then
        Do While Not rst.EOF
            rst.MoveNext
        Loop
    End If
    If rst.RecordCount = 0 Then
    Else
        ContarLimpiarAutores = rst.RecordCount
    End If
    rst.Close
    Set rst = Nothing
End Function
Public Function DesactivarAutores(FName As Form)
    If ContarLimpiarAutores() = "" Then
        FName.CmdLimpieza.Enabled = False
    Else
        FName.CmdLimpieza.Enabled = True
    End If
End Function

Y en el formulario, llamo a esta función en los eventos "Después de insertar un registro" y en "Después de eliminar". Sin embargo, en este último caso, cuando elimino un registro, no me inhabilita el botón.

¿Sabes por qué puede ser?

1 Respuesta

Respuesta
2

No entiendo nada de la instrucción, pero por si te sirve, si tengo el formulario Clientes, donde voy a usar el cuadro de texto que tu tienes para filtrar con países.

Si pongo cran (cadena de Ucrania, que no hay ninguno) y pulso Enter

El botón sigue Habilitado, ya que no hay ningún país de Clientes que tenga esa cadena, y ejecutaría lo que le digas. Pero, si por ejemplo, escribiera Lem ( de Alemania, que si hay)

Cuando pulsara Enter

Más o menos, sería como si ese Autor tuviera algún registro en la tabla donde se guardan

El código del evento después de actualizar del cuadro de texto Texto10 es

If Nz(DCount("*", "clientes", "pais like ""*""&'" & Me.Texto10 & "'&""*""")) = 0 Then
Comando9.Enabled = True
Else
Comando9.Enabled = False
End If

En tu caso, sería en la tabla donde se guardan los libros y el criterio sería, por ejemplo, Autores

Muchas gracias por la explicación tan detallado. La solución estaba en cambiar de evento. Lo estaba poniendo en "Al eliminar", y donde realmente tenía que ponerlo era en "Después de confirmar la eliminación".

Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas