Access - filtros multiples

 
Vista:
sin imagen de perfil
Val: 16
Ha disminuido su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

filtros multiples

Publicado por FERNANDO (10 intervenciones) el 18/01/2020 15:09:33
hola a todos.
Realizo filtros de formulario con el siguiente código, que realiza la búsqueda dentro de un subformulario.

1
2
3
4
5
6
7
8
9
Me.Of_OfertaLisResu.Form.Filter = ""
Me.Of_OfertaLisResu.Form.FilterOn = False
Me.Refresh
Dim sFiltro As String
sFiltro = "DescripcionProyecto LIKE'*" & Me.SelProyecto & "*'"
Me.Of_OfertaLisResu.Form.Filter = sFiltro
Me.Of_OfertaLisResu.Form.FilterOn = True
 
[Of_OfertaLisResu].SetFocus

Así pues, en el formulario principal tengo un campo llamado SelProyecto donde anoto la palabra a buscar, el código filtra el subformulario, Of_OfertaLisResu ,mostrando los registros cuyo campo DescripcionProyecto continene la palbra escrita previamente.
Fácil y practico, pero necesitaría que el filtro cumpliera este argumento y algún otro como por ejemplo que el documento se llamara de una determinada forma.
Básicamente, lo que necesito es ayuda para generar un código de filtrado que cumpla con dos argumentos....
Gracias por la atencion quedo a la espera!!



filtros
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

filtros multiples

Publicado por Anonimo (3316 intervenciones) el 19/01/2020 22:29:44
--- Un filtro ---
"DescripcionProyecto LIKE'*" & Me.SelProyecto & "*'"

--- Otro filtro ---
"Operiario LIKE'*" & Me.Operario & "*'"

Si se tienen que cumplir ambas condiciones ===> AND
Si solo se tiene que cumplir una (o la otra) ===> OR

1
2
3
sFiltro = "DescripcionProyecto LIKE'*" & Me.SelProyecto & "*'  AND Operiario LIKE'*" & Me.Operario & "*'"
 
sFiltro = "DescripcionProyecto LIKE'*" & Me.SelProyecto & "*'  OR  Operiario LIKE'*" & Me.Operario & "*'"
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
sin imagen de perfil
Val: 16
Ha disminuido su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

filtros multiples

Publicado por FERNANDO (10 intervenciones) el 20/01/2020 10:24:44
Buenos días y gracias,

Añado el código como indicas,

sFiltro = "TIPO_NOMBRE LIKE'*" & Me.SelTipo2 & "*'" Or "USUARIO_NOMB2 LIKE'*" & Me.SelUsuario2 & "*'"

y me da un error 13 en tiempo de ejecución, no coinciden los tipos
errror-13
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

filtros multiples

Publicado por Anonimo (3316 intervenciones) el 20/01/2020 11:07:46
Creo que no se ha aplicado la solución, siguiendo EXACTAMENTE las pautas marcadas.

Los filtros requieren una sintaxis determinada para que el motor de Access los pueda gestionar, no es cosa de tomar dos textos y 'amontonarlos' utilizando como pegamento-cola un 'OR' o un 'AND'.

Si hay dificultades para crearlos de forma correcta, una solución que puede ayudar es:

.- construir esas condiciones con el generador grafico de consultas
.- una vez que funcione en las condiciones deseadas se pone a esa consulta en su 'vista SQL'
.- lo que aparece detrás de 'WHERE' es lo que hay que imitar.

Pregunta:
¿no hay una visión correcta de la solución que he posteado en formato 'código' para que se aprecien los detalles de la sintaxis?.
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
sin imagen de perfil
Val: 16
Ha disminuido su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

filtros multiples

Publicado por FERNANDO (10 intervenciones) el 20/01/2020 11:35:06
Hola, gracias por el interés, no soy usuario avezado....

Este es código completo que se ejecuta al actualizar el cuadro de texto.

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub SelTipo2_AfterUpdate()
 
Me.A7_1_5_103_SUBFORMULIO_PARA_LISTA.Form.Filter = ""
Me.A7_1_5_103_SUBFORMULIO_PARA_LISTA.Form.FilterOn = False
Me.Refresh
Dim sFiltro As String
sFiltro = "TIPO_NOMBRE LIKE'*" & Me.SelTipo2 & "*'"
Me.A7_1_5_103_SUBFORMULIO_PARA_LISTA.Form.Filter = sFiltro
Me.A7_1_5_103_SUBFORMULIO_PARA_LISTA.Form.FilterOn = True
[A7_1_5_103_SUBFORMULIO_PARA_LISTA].SetFocus
 
End Sub



Y este el el código que se ejecuta al actualizar el otro cuadro de texto, lo que necesito es "fusionar" ambos códigos para que se cumplan sendas condiciones.... ambos códigos funcionan correctamente por separado y están copiados directamente del editor de Visual Basic.

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub SelUsuario2_AfterUpdate()
 
Me.A7_1_5_103_SUBFORMULIO_PARA_LISTA.Form.Filter = ""
Me.A7_1_5_103_SUBFORMULIO_PARA_LISTA.Form.FilterOn = False
Me.Refresh
Dim sFiltro As String
sFiltro = "USUARIO_NOMB2 LIKE'*" & Me.SelUsuario2 & "*'"
Me.A7_1_5_103_SUBFORMULIO_PARA_LISTA.Form.Filter = sFiltro
Me.A7_1_5_103_SUBFORMULIO_PARA_LISTA.Form.FilterOn = True
[A7_1_5_103_SUBFORMULIO_PARA_LISTA].SetFocus
 
End Sub
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

filtros multiples

Publicado por Anonimo (3316 intervenciones) el 20/01/2020 19:40:37
Pues construye de forma correcta la expresión, no las 'encoles' sin mas

Un ejemplo:

"Si llueve llévate un paraguas"
"Si hace Sol llévate un sombrero"

Lo que es correcto (con OR = O)
"Si llueve llévate un paraguas O Si hace Sol llévate un sombrero"

Lo que has empleado:
"Si llueve llévate un paraguas" O "Si hace Sol llévate un sombrero"


Espero que la pista sea clara y contundente (no hace falta programar, solo interpretar).
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
sin imagen de perfil
Val: 16
Ha disminuido su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

filtros multiples

Publicado por FERNANDO (10 intervenciones) el 21/01/2020 09:52:23
Buenos días!!

Pista clara, contundente, aplicable y problema resuelto!!!!!!!!!!
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