Marcar todos en campo si/no en formulario access

Tengo un formulario access con un subformulario. En el subformulario hay uno de los campos que es tipo si/no. Me gustaría que mediante una macro o algo similar pudiera marcar a la vez el campo si/no de todos los registros.

He intentado probar con la opción buscar/reemplazar en la tabla de la que tira el subformulario pero al buscar los valores de sí/no (he probado con -1, 0, verdadero, falso, está seleccionado, está activado, etc) no encuentra nada. La idea que encontrara los que no están marcados y reemplazarlos por el valor marcado.

¿Alguna solución?

1 Respuesta

Respuesta
2

Se me ocurren varias:

1º/

CurrentDb.Execute "UPDATE NombreTabla SET nombreCampo=-1 WHERE nombreCampo=0"

Donde NombreTabla será el nombre de la tabla/consulta origen del subformulario y nombreCampo en nombre de tu campo Sí/NO. Si tienes más condiciones de filtrado en el subformulario, se las añades a la SQL.

Ese código se lo asocias a un botón o al evento que consideres más oportuno. Si lo haces en el propio Subformulario, le añades Me. Refresh, y si lo haces en el formulario: Me. NombreSubform.Form. Refresh

2º/ Usar el recordset del subformulario:

Dim rst As DAO.Recordset
Set rst=Me.RecordsetClone
rst.MoveFirst
Do Until rst.EOF
  If rst("nombreCampo")=0 Then
    rst.Edit
    rst("nombreCampo")=-1
    rst.Update
  End If
  rst.MoveNext
Loop
Rst. Close

Eso si lo programas dentro del subformulario. Si lo quieres programar en el formulario, has de cambiar la linea Me. RecordsetClone, por algo como Me. NombreSubform.Form. RecordsetClone. De nuevo todo lo que es nombre... has de cambiarlo por los nombres que tú tengas.

Gracias por la respuesta pero soy usuario básico de access y no utilizo ni siquiera lenguaje SQL. La primera opción que pones ¿donde debo poner el texto que indicas?

Gracias

Como no dices cómo quieres hacer para marcar todos los registros, te propongo que lo hagas con un botón en el subformulario.

Lo que tienes que hacer es abrir el subformulario en vista diseño, añadirle un botón donde más te guste, sacar las propiedades de ese botón ( con el botón derecho del ratón), ir a la pestaña Eventos, y en la fila correspondiente al evento "al hacer clic", pulsas en el botón con los tres puntos que aparece a la derecha, y de las tres opciones que te aparecerán, eliges " generar código ". Eso te llevará al editor de VBA, y ahí donde te coloca el cursor ( entre Private Sub... Y end sub) es donde has de poner el código que te digo ( y con el me. Refresh que mencionó luego)

Muchísimas gracias. Ya me sale.

Tan solo una cosa más, ¿lo mismo pero para desmarcarlos?

Otro botón con el mismo código pero donde pone rst(...)=0 pones rst(...)=-1 y viceversa 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas