Private Sub CmdFiltrar_Click()
On Error GoTo Err_CmdFiltrar_Click
'Creamos la variable que contendrá la combinación de todos los filtros
Dim sFiltro As String
'Creamos una variable para guardar el filtro por Empresa ,Cliente, LV, Provincia y Proyecto
Dim sCodArticuloSufijo As String
Dim sDescripcion As String
Dim sUnidadesMedida As String
Dim sPrecio As String
Dim sProveedor As String
Dim sStockMinimo As String
Dim sZonaAlmacen As String
Dim sCategorias As String
Dim sEpi As String
'Construyo la cadena para filtrar por CodArticuloSufijo
If Not IsNull(Me.FiltroCodArticuloSufijo) And Me.FiltroCodArticuloSufijo <> "" Then
sCodArticuloSufijo = "CodArticuloSufijo LIKE '*" & Me.FiltroCodArticuloSufijo & "*'" & " ORDER BY " & "'*" & CodArticuloSufijo & "*'" & ";"
Else
sCodArticuloSufijo = ""
End If
'Construyo la cadena para filtrar por Descripcion
If Not IsNull(Me.FiltroDescripcion) And Me.FiltroDescripcion <> "" Then
sDescripcion = "Descripcion LIKE '*" & Me.FiltroDescripcion & "*'"
Else
sDescripcion = ""
End If
'Construyo la cadena para filtrar por AlmacenDestino
If Not IsNull(Me.FiltroUnidadesMedida) And Me.FiltroUnidadesMedida <> "" Then
sUnidadesMedida = "UnidadMedida LIKE '*" & Me.FiltroUnidadesMedida & "*'"
Else
sUnidadesMedida = ""
End If
'Construyo la cadena para filtrar por Precio
If Not IsNull(Me.FiltroPrecio) And Me.FiltroPrecio <> "" Then
sPrecio = "Precio LIKE '*" & Me.FiltroPrecio & "*'"
Else
sPrecio = ""
End If
'Construyo la cadena para filtrar por Proveedor
If Not IsNull(Me.FiltroProveedor) And Me.FiltroProveedor <> "" Then
sProveedor = "Proveedor LIKE '*" & Me.FiltroProveedor & "*'"
Else
sProveedor = ""
End If
'Construyo la cadena para filtrar por StockMinimo
If IsNull(Me.FiltroStockMinimo) And Me.FiltroStockMinimo <> "" Then
sStockMinimo = "StockMinimo LIKE '*" & Me.FiltroStockMinimo & "*'"
Else
sStockMinimo = ""
End If
'Construyo la cadena para filtrar por ZonaAlmacen
If Not IsNull(Me.FiltroZonaAlmacen) And Me.FiltroZonaAlmacen <> "" Then
sZonaAlmacen = "ZonaAlmacen LIKE '*" & Me.FiltroZonaAlmacen & "*'"
Else
sZonaAlmacen = ""
End If
'Construyo la cadena para filtrar por Categorias
If Not IsNull(Me.FiltroCategorias) And Me.FiltroCategorias <> "" Then
sCategorias = "Categoria LIKE '*" & Me.FiltroCategorias & "*'"
Else
sCategorias = ""
End If
'Construyo la cadena para filtrar por Epi
If IsNull(Me.FiltroEpi) And Me.FiltroEpi <> "" Then
sEpi = "Epi LIKE '*" & Me.FiltroEpi & "*'"
Else
sEpi = ""
End If
'*************************************************************************
' Según estén vacías o no las distintas variables (Filtros)
' construyo el filtro final que se enviará al subformulario.
' Lo que hacemos es combinarlos con "AND"
'*************************************************************************
If sCodArticuloSufijo <> "" Then
sFiltro = sCodArticuloSufijo
End If
If sDescripcion <> "" Then
If sFiltro <> "" Then
sFiltro = sFiltro & " AND " & sDescripcion
Else
sFiltro = sDescripcion
End If
End If
If sUnidadesMedida <> "" Then
If sFiltro <> "" Then
sFiltro = sFiltro & " AND " & sUnidadesMedida
Else
sFiltro = sUnidadesMedida
End If
End If
If sPrecio <> "" Then
If sFiltro <> "" Then
sFiltro = sFiltro & " AND " & sPrecio
Else
sFiltro = sPrecio
End If
End If
If sProveedor <> "" Then
If sFiltro <> "" Then
sFiltro = sFiltro & " AND " & sProveedor
Else
sFiltro = sProveedor
End If
End If
If sStockMinimo <> "" Then
If sFiltro <> "" Then
sFiltro = sFiltro & " AND " & sStockMinimo
Else
sFiltro = sStockMinimo
End If
End If
If sZonaAlmacen <> "" Then
If sFiltro <> "" Then
sFiltro = sFiltro & " AND " & sZonaAlmacen
Else
sFiltro = sZonaAlmacen
End If
End If
If sCategorias <> "" Then
If sFiltro <> "" Then
sFiltro = sFiltro & " AND " & sCategorias
Else
sFiltro = sCategorias
End If
End If
If sEpi <> "" Then
If sFiltro <> "" Then
sFiltro = sFiltro & " AND " & sEpi
Else
sFiltro = sEpi
End If
End If
'Una vez compuesta la variable sFiltro podemos verla en la ventana
'inmediato para verificar que lo estamos haciendo bien
Debug.Print sFiltro
'Y a partir de aquí, si la variable sFiltro no está vacía
'se la aplicamos al subformulario
If sFiltro <> "" Then
'Asignamos la varaible a la propiedad Filter del subformulario
Me.Form.Filter = sFiltro
'Me.BusquedaSubFormulario.Form.Filter = sFiltro
'Le decimos al subformulario que active el filtro
'que previamente hemos asignado.
Me.Form.FilterOn = True
'Me.BusquedaSubFormulario.Form.FilterOn = True
Else
'Si la variable está en blanco nos indica que no hay
'seleccionados ningún filtro y por tanto lo desactivamos
Me.Form.FilterOn = True
'Me.BusquedaSubFormulario.Form.FilterOn = False
End If
Salida:
Exit Sub
Err_CmdFiltrar_Click:
MsgBox Err.Description
Resume Salida
End Sub