Borrar registros con casilla de verificación en verdadero

Tengo el siguieinte formulario continuo

c

Como pueden ver ese formulario tiene un campo de revisado tiene casillas de verificación unas chuleadas y otras no

Quisiera que con un botón hiciera un recorrido de todos los registros y eliminara las casillas de verificación que están en verdadero

Espero me hayan entendido

Muchas gracias por la ayuda quedo atento a recomendaciones y correcciones

3 Respuestas

Respuesta
1

No seria una mala idea verificar de forma previa a la selección que no quedasen restos de selecciones anteriores.

Una SQL que se puede poner en la apertura del formulario seria esta:

CurentDb.Execute "Update [La tabla] Set [campo de selección] = 0"

Esta SQL solo pone a todos los registros a FALSE (0).

Es una forma de garantizar que no se borraran registros tanto presentes como no presentes en el formulario y que (por cualquier causa) conservasen el valor TRUE (<> 0)

Inapreciable Eduardo, tienes todo el derecho a dar un/tu punto de vista, pero seria de agradecer que no menospreciases los de los demás porque el único que posee toda la información y puede decidir que camino seguir es quien hizo la pregunta.

Respuesta
2

Cuidado con la respuesta que le dan estaría retirando los registros de la tabla, se debe clonar el formulario si, por ejemplo, se ha filtrado el rango de fechas. Este sería el código del botón

Private Sub btnActualiza_Click()
 On Error Resume Next
  Dim miRS As Recordset
  Set miRS = Me.RecordsetClone
   miRS.MoveLast
   miRS.MoveFirst
  Do Until miRS.EOF
    If miRS!Revisado Then
      miRS.Edit
      miRS!Revisado = 0
      miRS.Update
    End If
    miRS.MoveNext
  Loop
   Me.Requery
End Sub

Ahora no es uno sino 2 los ignorantes no voy antrar en polémicas con analfabetas en Access la decisión la tiene quien pregunto

Hernán si quiere retirar los registros marcados desde el formulario, puede utilizar este código.

Private Sub btnActualiza_Click()
  On Error GoTo hay_error
  Dim miRS As Recordset
  Dim lnCuenta As Integer
  Set miRS = Me.RecordsetClone
   miRS.MoveLast
   miRS.MoveFirst
  Do Until miRS.EOF
    If miRS!Revisado Then
      If MsgBox("¿Está seguro que retira el registro " & vbCrLf & vbCrLf & _
      miRS!idexpediente, vbQuestion + vbYesNo + vbDefaultButton2, "Retirando registros") = vbYes Then
        miRS.Delete
        lnCuenta = lnCuenta + 1
      End If
    End If
    miRS.MoveNext
  Loop
   Me.Requery
 If lnCuenta > 0 And Err.Number = 0 Then
    MsgBox "Se retiraron " & lnCuenta & " registros satisfactorialmente", vbInformation, "Retirando registros"
 End If
hay_error_exit:
   Exit Sub
hay_error:
     MsgBox "Ocurrió el error " & Err.Number & vbCrLf & Err.Description, vbCritical, "Error..."
     Resume hay_error_exit
End Sub

Su pregunta tiene una contradicción, el título dice "Borrar registros con casilla de verificación en verdadero" y el enunciado dice "Quisiera que con un botón hiciera un recorrido de todos los registros y eliminara las casillas de verificación que están en verdadero", por esto le complemento la respuesta con el código para eliminar, entiendo que no utiliza una instrucción SQL como DELETE  FROM ..... porque los registros del formulario se obtienen como resultado de un filtro. No obstante, si quiere retirar todos los registros que tengan marcada la casilla es más rápido con:

Currrentdb.Execute "DELETE FROM nombretabla WHERE Revisado=-1"

Respuesta
1

No necesitas recorrer los registros. Si el formulario depende de una tabla Contactos, puedes poner, por ejemplo en un botón

Docmd.runsql"delete * from contactos where revisado=true"

Me. Requery

Es decir, borra de la tabla Contactos todos aquellos registros en que esté marcada la casilla Revisado, y luego que el formulario "reconsulte" su origen de registros.

Para el soplagaitas de Eperezfer. ¿De dónde coño te has sacado que quiera hacer un filtro con fechas? Siempre tienes que añadir cualquier tontería para justificar tu existencia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas