Filtro en Access

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.
Respuesta
1
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
-----------------------------
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
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.
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.
Mi email [email protected]
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.
Ya te envié el ejemplo tu e-mail.

1 respuesta más de otro experto

Respuesta

Without having to complete all the TxtBoxes, you can add that if any or all of these TxtBoxes contain null values when searching, assign them the value "*", an example of how the code would How does it look like word hurdle

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas