Aplicar varios filtros

¿Cómo puedo aplicar varios filtros sobre los datos de un formulario y que estos filtros sean acumulativos?
Esto es por ejemplo tengo 3 combos en el formulario que utilizo para definir los filtros que quiero que se apliquen, así por ejemplo si selecciono un valor en el primer combo se filtren los datos por ese valor, y si selecciono después un valor en el 2 combo se filtren los datos que ya tenia filtrados pero usando el nuevo valor para filtrarlos de nuevo.
Bno espero haberme explicado más o menos ..

1 respuesta

Respuesta
1
Yo he realizado alguna que otra vez cosas similares a las que me cuentas y normamalmente lo he hecho utilizando combos o campos de texto más un botón que aplica/desaplica los filtros.
En el ejemplo que te pongo abajo correspondiente al código del botón aplicar filtro, tengo 4 campos de texto independientes mediante los cuales voy a filtrar un campo concreto y 3 combos situados entre ellos que me seleccionan si la operación es una Y o una O.
Al pulsar el botón de filtro, analizo los campos y monto una cadena que se la paso a me.filter y hago me.filteron=true.
Private Sub Comando58_Click()
Dim CadFiltro As String
If Not IsNull(Me.fil1) Then
CadFiltro = "(BibliografíaI2.refBiblio Like '*" & Me.fil1 & "*') "
'" Or BibliografíaI2.refBiblio Like "*1973*"))"
If Not IsNull(Me.fil2) Then
CadFiltro = CadFiltro & Me.nexo1 & " (BibliografíaI2.refBiblio Like '*" & Me.fil2 & "*')"
If Not IsNull(Me.fil3) Then
CadFiltro = CadFiltro & Me.nexo2 & " (BibliografíaI2.refBiblio Like '*" & Me.fil3 & "*')"
If Not IsNull(Me.fil4) Then
CadFiltro = CadFiltro & Me.nexo3 & " (BibliografíaI2.refBiblio Like '*" & Me.fil4 & "*')"
End If
End If
End If
Me.Filter = CadFiltro
Me.FilterOn = True
Me.lblfiltro.Visible = True
Else
MsgBox " Es obligatorio rellenar el primer término para aplicar el filtro. ", vbInformation
End If
End Sub
Me. FilX son los campos de texto y me. NexoX son los combos con la Y/O.
Entiendo como lo haces y la verdad me es muy útil.. pero ¿no hay alguna manera de sacar el filtro que se esta aplicando en un momento dado? Así podría poner en los campos que uso como filtro en el evento afterupdate un procedimiento que añadiese al filtro la nueva restricción y conseguiría que los filtros se aplicarían automáticamente sin tener que pinchar en el botón de aplicar filtro.
De todos modos gracias probare de momento con un botón de aplicar filtro.
Un saludo, Juan
Prueba a que la aplicación de filtros se realice en el evento afterupdate on al perder el foco.
La forma de ver que filtro se está utilizando es mediante me.filter, por lo que es posible que puedas hacer algo así como me.filter=me.filter & " AND " & filtro2
Donde filtro2 es la condición de tu segundo combo.
Prueba y ya me contaras

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas