Filtrar según el valor de un cuadro combinado en access

Tengo un formulario que depende de una consulta en la que tengo dos Input, uno es la fecha y el otro un cuadro combinado en el que elijo el proveedor, mi pregunta hay forma de que si tengo el cuadro combinado en blanco me los filtre todos, y si elijo un proveedor determinado solo me filtre por ese valor

3 Respuestas

Respuesta
2

Pedro puedes hacerlo de muchas formas, si fueran más cuadros de texto o combinados o... es más fácil usar filtros encadenados, pero para sólo dos controles es preferible usar el if, que además es mucha más didáctico.

Por ejemplo, tengo la tabla Pedidos y un subformulario Pedidos basado en esa tabla, donde le he añadido un cuadro de texto FechaBusca y un combinado Elegir destinatario.

Vamos a suponer que sólo escribo una fecha

Al pulsar el botón de Filtrar sólo lo hace por la fecha ya que el combinado es nulo.

Por el contrario. si lo que elijo es un destinatario

Al pulsar el botón, me limita los registros a los del combinado

Por último, si los dos tuvieran datos, me sacaría los registros con esa fecha y el destinatario elegido.

En este caso el código del botón es

Private Sub Comando15_Click()
If Not IsNull([FechaBusca]) And IsNull([ElegirDestinatario]) Then
Me.RecordSource = "select * from pedidos where fechapedido=#" & Me.FechaBusca & "#"
ElseIf IsNull([FechaBusca]) And Not IsNull([ElegirDestinatario]) Then
Me.RecordSource = "select * from pedidos where destinatario='" & Me.ElegirDestinatario & "'"
Else
Me.RecordSource = "select * from pedidos where fechapedido=#" & Me.FechaBusca & "# and destinatario='" & Me.ElegirDestinatario & "'"
End If
End Sub

Ya te digo que si fueran más criterios sería más conveniente usar filtros encadenados.

Respuesta
1

Pedro si quiere algo más completo lo invito a ver este video, descargue los ejemplos.

https://youtu.be/Bwg4KlJEkX4 

Respuesta
1

Una alternativa (se utiliza la consulta).

He creado una consulta con esta SQL (todos los datos y una condición):

SELECT *
FROM Empleados_Tareas
WHERE (((Empleados_Tareas.idempleado)=IIf(IsNumeric([Formularios]![Formulario2]![Tienda_muestra]),[Formularios]![Formulario2]![Tienda_muestra],"*")));

Si en el formulario [formulario2] el campo [tienda muestra] tiene un dato seleccionado (se espera un ID numérico como respuesta) no devuelve un valor numérico, aplica el asterisco (equivale a 'Todos') si devuelve un ID lo aplica como condición.

Solo tiene una exigencia: tiene que tener un elemento seleccionado en el combo o dará error.

¿Te has planteado la opción 'Todos' en el combo? (No en la tabla, solo en el combo), consiste en añadirla mediante una consulta de unión.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas