Filtro en Access

Respuesta de
a
Avatar
Usuario
Buenas de nuevo.
Tengo un formulario -Internos hospital- con muchos campos "cuadors de texto-combinados" -nombre, fecha nací. Etc.- que se quedan guardados en registros en la tabla -Registro Internos Hospital-.
He creado un nuevo formulario -filtros- y lo que quiero es tener varias cajas de texto y dos botones "Aplicar filtro" - "quitar filtro", para poder filtrar los datos de la tabla -Registro Internos Hospital-, según las cajas de texto.
Estoy haciendo pruebas, pero no sé muy bien como orientar el tema, gracias de antemano.
Avatar
Experto
¿Hola, qué tal?
Si los datos están en el mismo formulario que los botones, el código para aplicar los filtros sería, por ejemplo:
 
-----------------------------
 
DoCmd.ApplyFilter "", "Campo1 = 'Form!TxtCampo1' and Campo2 = 'Form!TxtCampo2' and Campo3 = 'Form!TxtCampo3' and Campo4 = 'Form!TxtCampo4'"
 
----------------------------
 
Y así con todos los criterios que quieras...
 
Y para quitar los filtros aplicados:
 
-----------------------------
 
Me.FilterOn = False
 
----------------------------
 
Si los datos están en otro formulario:
 
----------------------------
 
Forms![NombreForm].Filter = "Campo1 = 'Form!TxtCampo1' and Campo2 = 'Form!TxtCampo2' and Campo3 = 'Form!TxtCampo3' and Campo4 = 'Form!TxtCampo4'"
Forms![NombreForm].FilterOn = True
---------------------------
Y para quitarlo:
-----------------------------
Forms![NombreForm].FilterOn = False
-----------------------------
Espero que te se útil. SALUDOS!
 
 
Avatar
Usuario
He probado, pero creo que no lo pongo bien.
Tengo un Formulario, dentro de éste un subformulario donde quiero filtrar, tengo varias cajas de texto y dos botones.
¿Cómo relaciono las cajas de texto para que me filtre el subformulario?
Gracias
Avatar
Experto
Hola de nuevo!
 
Con el código que te pasé tendría que funcionar. Otra forma de hacerlo es con una consulta:
 
Creás la consulta en base a la tabla donde están los datos y en Criterios de los campos por los que querés filtrar ponés:
 
Como [Formularios]![NombreFormulario]![NombreTxtBox]
 
Esa consulta la ponés de Origen de Registro del Subformulario
 
En el botón de Buscar o Filtrar ponés:
 
Me.NombreSubformulario.Requery
 
Para actualizar el subformulario tomando como criterios de la consulta los TextBox.
 
Para que no haya necesidad de completar todos los TxtBox podes agregar que si alguno de estos o todos, contienen valores nulos al momento de buscar les asigne el valor de "*", un ejemplo de cómo quedaría el código sería:
 
If IsNull(Nombre) or me.nombre = "" Then
me.nombre = "*"
End If
If IsNull(domicilio) or me.domicilio = "" Then
me.nombre = "*"
End If
 
Así con todos los TxtBox
 
Me.NombreSubformulario.Requery
 
Y para que no queden visibles los "*", después de que se actualiza el subformulario, volvés los "*" a "" :
 
If me.nombre = "*" Then
me.nombre = ""
End If
If me.domicilio = "*" Then
me.nombre = ""
End If
El código quedaría así:
If IsNull(Nombre) or me.nombre = "" Then
me.nombre = "*"
End If
If IsNull(domicilio) or me.domicilio = "" Then
me.nombre = "*"
End If
Así con todos los TxtBox
Me.NombreSubformulario.Requery
If me.nombre = "*" Then
me.nombre = ""
End If
If me.domicilio = "*" Then
me.nombre = ""
End If
Para que al iniciar el formulario te entregue todos los registros en el subformulario lo único que tenés que hacer es poner en el evento Al Cargar que se active el botón de Filtrar. Como los TxtBox estarán en blanco, el código los pondrá como "*" y se entregarán todos los registros:
NombreBotón_Click
Y si querés poner un botón de "Quitar filtro" lo que hay que hacer es poner en blanco todos los TxtBox y activar el botón de Filtrar
me.nombre = ""
me.domicilio = ""
NombreBotón_Click
¿Se entiende la idea o te compliqué más? Je je..
Espero que te funcione, si no es así volveme a consultar y te armo un ejemplo para mandarte al mail.
Saludos!
 
 
 
Avatar
Usuario
Lo siento, pero no me funciona. Si n oes mucha molestia te agradecería me enviaras un ejemplo.
1 formulario donde hay dos botones, poner filtro - quitar filtro.
2 cajas de texto para filtrar una tabla "consulta o subformulario" me da igual.
1 caja de texto para filtrar de tal fecha a tal fecha.
Gracias, bueno todo esto si tienes alguno parecido o no te cuesta mucho, sino no pasa nada, me has sido de mucha ayuda, gracias. Si no soy capaz de hacerlo lo filtrare directamente desde el subformulario. (Aplicando el filtro en la misma tabla).
Un saludo.
Avatar
Usuario
Mi email batista1980@hotmail.es
El problema que me surge con ambas soluciones es que en las cajas de texto me aparece ¿nombre_operario? Y no me deja escribir nada.
Gracias de nuevo por todo.
Avatar
Experto
¿Hola amigo, que tal?
Ya te envié el ejemplo tu e-mail.
Saludos!
Avatar
Usuario
Perdón por tardar tan to en contestar, he estado fuera.
Las repuestas y el ejemplo como siempre de 10.
Un saludo.