Access - Filtrar fila solo con un botón de opción activado

   
Vista:

Filtrar fila solo con un botón de opción activado

Publicado por Principiante Access (9 intervenciones) el 15/04/2016 11:01:39
Buenas,

Tengo un cuadro de lista en un formulario que recargo con unos filtros. Basicamente quiero aplicar un filtro solo si una casilla de opción está activada.

El filtro es este ">Fecha() O Es Nulo" y hace exactamente lo que quiero pero como digo, solo quiero que lo filtre cuando tengo esa casilla marcada.

He buscado y no termino de sacar nada en claro.

Si alguien me pudiera echar una mano le estaría muy agradecido.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Filtrar fila solo con un botón de opción activado

Publicado por Enrique Heliodoro (1663 intervenciones) el 15/04/2016 11:15:01
Desconociendo si es un filtro multiple o simple (es decir: se 'desconoce todo') , lo único que se necesitaría seria añadir ese parámetro (el valor de la casilla) en el propio filtro, otra alternativa es que esa casilla 'activase/desactivase' la propiedad FILTER del formulario (con la casilla activada se filtra, con ella desactivada no se filtra):

Me.FilterOn = Me.[la casilla de verificación)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar fila solo con un botón de opción activado

Publicado por Principiante Access (9 intervenciones) el 15/04/2016 12:29:22
Muchas gracias por la respuesta.

Es un filtro simple, de este estilo:

E9xQDsQ

Efectivamente quiero hacer la primera opción que me has dado, es lo que pretendía (No desactivar el filtro completo).

Lo que preguntaba es que no sé como meter el IF dentro del filtro para usarlo como condición dependiendo de que esté el parámetro activado o desactivado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar fila solo con un botón de opción activado

Publicado por Enrique Heliodoro (1663 intervenciones) el 15/04/2016 19:06:59
Hablas de un formulario y presentas una consulta creada con el generador grafico (que bien es cierto, puede ser el origen de datos del formulario), pero .....

El origen de datos 'ya viene filtrado' y cambiar esas condiciones supondría 'regenerar el origen de datos' tras modificar el filtro (filtro que tendría que hacer referencia a un objeto del formulario) .... mucha complicación para algo simple.

Un formulario que se abra con ese origen de datos y sin condiciones, nos permitiría (modificando la propiedad FILTER del formulario) cambiar las condiciones en tiempo de ejecución sin problemas, y además de ello (dado que hay que 'decirle' que aplique el filtro), aplicar o no el filtro en función de esa casilla de opción (que supongo sera un campo booleano, esto es: Si/No)

Si esa opción te es valida, seguimos con ella (requiere conocer un poco de VBA o prestar un poco de atención al seguir los pasos).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar fila solo con un botón de opción activado

Publicado por Principiante Access (9 intervenciones) el 18/04/2016 09:30:53
Claro que me es válido,

lo tengo hecho con el generador gráfico porque me es más fácil y además hay más filtro que el que se muestra en la imagen, filtrando por nombre y más atributos pero por supuesto que me es válida la opción de filtrar todo por VBA...

Creía que era más fácil meter en el generador gráfico un IF que me comprobara el valor del parámetro para saber si es true o false.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar fila solo con un botón de opción activado

Publicado por Enrique Heliodoro (1663 intervenciones) el 18/04/2016 14:00:04
Construir un filtro de forma dinámica es sencillo, solo exige 'tener las ideas muy claras'.

En VBA tenemos a disposición la opción de activar/desactivar los filtros aplicados en los formularios y es independiente de como se genere o aplique el filtro (se aplica o no se aplica).

Para construir el filtro, lo mas habitual consiste en evaluar todas las condiciones de forma independiente y de cumplirse aunarlas para crear el filtro.
Hay que partir de un concepto que tiene que quedar diáfano:
La opción 'todos' (en una condición) no tiene sentido, simplemente se excluye la condición

Aclarando: si tenemos un conjunto de datos (alumnos por ejemplo) y han de cumplir dos condiciones (tener una edad concreta y ser varones):
Select * From alumnos where Edad = 18 And Sexo = 'Varon'

en el supuesto de que una de ellas la desestimemos (no diferenciaremos por sexo) el generador de consultas lo generaría asi:
Select * From alumnos where Edad = 18 And Sexo = '*'

Pero es 'mas limpia' y rápida si la generamos asi:
Select * From alumnos where Edad = 18

Para esto ultimo lo haríamos asi (hay mas métodos, pero cada uno utiliza el que mas le gusta)
' Dimensionmos una variable de texto:
Dim MiFiltro As String

'Evaluamos si se aplica la condición edad, si se cumple .....
If Nz(Me.Edad, 0) <> 0 Then MiFiltro = "Edad =" & Me.Edad
'Si no se cumple, en MiFiltro hay una cadena vacia

'Evaluamos si se aplica la condición Sexo:
If Nz(Me.Sexo, "") <> "" Then
'Ahora evalumos si en la variable 'MiFiltro' hay contenido, si lo hay añadimos un AND)
IF MiFiltro <> "" Then MiFiltro = MiFiltro & " AND "
'Como hay condición que cumplir, la concatenamos
MiFiltro = MiFiltro & "Sexo = '" & Me.Sexo & "'"
End IF

... se repite este paso para cada condición ....

Al final (y con los datos actuales) en MIFiltro puede haber lo siguiente:
a.- Edad = 18 And Sexo ='Varon'
b.- Edad = 18
c.- Sexo = 'Varon'
d.- "" <== nada

Asignamos el filtro al formulario:
Me.Filter = MiFiltro
' verificamos si el filtro tiene sentido aplicarlo, esto es: que MiFiltro sea diferente de 'nada' para aplicarlo o no
Me.FilterOn = MiFiltro <> ""

Aqui es donde se puede depender de una casilla de verificación (por ejemplo)
Me.FilterOn = Me.CasillaDeVerificacion

O combinando:
Me.FilterOn = MiFiltro <> "" And Me.CasillaDeVerificacion

Nota: Un campo (edad) es numérico y al otro (sexo) se le trata como texto, aplica en tu filtro el adecuado al dato (guíate por el ejemplo tras razonarlo, es elemental y sencillo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar