Varios Filtros en un formulario de Consulta Access 2010

Tengo un formulario de Consulta con 6 combo box que me aplican un filtro a una tabla y me da resultados unas imágenes que están en una tabla.

El problema es que cuando hago el primer filtro, por ejemplo Periodo: 2014, y luego voy a categoría de productos el primer filtro se desactiva. Lo que quiero es ir encadenando los filtros para que al final me reduzca las opciones de búsqueda y el usuario no deba de navegar por tantos resultados.

1 Respuesta

Respuesta
1

Para aplicar un filtro múltiple por medio de varios combos, mírate este ejemplo de Neckkito Nck, que lo explica paso a paso:

He seguido el ejemplo, pero no se si me falta algo o si cometi algun error u omision.

Esto es lo que me sucede ahora:

1.En los combobox me aparecen la lista de campos que deberian aparecer pero en blanco, es decir en 1 combobox solo deberia aparecer Sell In Qty, Sell In Amount y Sell Out Qty, me salen 3 campos pero en blanco.

2. Creo que tengo errores en el codigo VB para el boton de Filtro, pero la verdad soy principiante y desconozco los principios del uso de ciertos comandos o por ejemplo el uso de las " "

Este es el codigo que tengo para el boton:

Private Sub cmdFiltro_Click()
7Dim vNombre_Grafica As String
Dim vAsignador_de_Tipo As String
Dim vTipo_de_Periodo As String
Dim vPeriodo As String
Dim vSegmento As String
Dim vDealer As String
Dim vCategoria As String
Dim vLargo As Integer
Dim miFiltro As String
vNombre_Grafica = Nz(Me.cmbnamechart.Value, "")
vAsignador_de_Tipo = Nz(Me.cmbasigtype.Value, "")
vTipo_de_Periodo = Nz(Me.cmbtypeperiodo.Value, "")
vPeriodo = Nz(Me.cmbperiodo.Value, "")
vSegmento = Nz(Me.cmbsegmento.Value, "")
vDealer = Nz(Me.cmbdealer.Value, "")
vCategoria = Nz(Me.cmbdealer.Value, "")
miFiltro = ""
If vNombre_Grafica <> "" Then
miFiltro = "AND [Nombre_Grafica]="" & vNombre_Grafica & "
End If
If vAsignador_de_Tipo <> "" Then
miFiltro = miFiltro & " And [Asignador_de_Tipo]=" & vAsignador_de_Tipo
End If
If vTipo_de_Periodo <> "" Then
miFiltro = miFiltro & " And [Tipo_de_Periodo]=" & vTipo_de_Periodo
End If
If vPeriodo <> "" Then
miFitro = miFiltro & " And [Periodo]=" & vPeriodo
End If
If vSegmento <> "" Then
miFiltro = miFiltro & " And [Segmento]=" & vSegmento
End If
If vDealer <> "" Then
miFiltro = miFiltro & " And [Dealer]=" & vDealer
End If
If vCategoria <> "" Then
miFiltro = miFiltro & " And [Categoria]=" & vCategoria
End If
vLargo = Len(miFiltro)
If vLargo > 0 Then
miFiltro = Right(miFiltro, vLargo - 4)
End If
Me.Filter = miFiltro
Me.FilterOn = True
End Sub

Por lo que veo del código, al declarar todas las variables como texto (Dim ... As String), al construir el filtro tienen que ir entre comillas simples, por ejemplo:

miFiltro = "AND [Nombre_Grafica]='" & vNombre_Grafica & "'"

Es decir, despues del signo = que sigue al nombre del campo, va una comilla simple (') y luego la comilla doble ("), y después de la variable va comilla doble-simple-doble

Si tu variable fuera de tipo fecha, en vez de la comilla simple usarías la almohadilla (#)

Y si fuera una variable numérica, lo harías como tienes ahora, es decir, el nombre de la variable directamente.

Lo de los combos sin ver tu BD no te puedo decir dónde tienes el fallo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas