Formulario se queda pillado con filtro en access

Tengo un formulario continuo basado en una consulta en el que filtro por determinados campos con el siguiente código:

Private Sub cmdFiltrar_Click()
    Dim vProf As String
    Dim vFecha As Variant
    Dim vAccion As String
    Dim vMenor As String
    Dim vFamilia As String
    Dim vLargo As Integer
    Dim miFiltro As String
        'Cogemos los valores que hayamos seleccionado como filtro
    vProf = Nz(Me.cboProfesional.Value, "")
    vFecha = Nz(Me.txtFecha.Value, "")
    vAccion = Nz(Me.cboAccion.Value, "")
    vMenor = Nz(Me.cboMenor.Value, "")
    vFamilia = Nz(Me.cboFamilia.Value, "")
        'Inicilizamos el filtro
    miFiltro = ""
        'Creamos la primera parte del filtro
    If vProf <> "" Then
        miFiltro = "AND [Profesional]='" & vProf & "'"
    End If
        'Creamos la segunda parte del filtro
    If vFecha <> "" Then
        miFiltro = miFiltro & " AND [Fecha]=#" & Format(vFecha, "mm/dd/yyyy") & "#"
    End If
        'Creamos la tercera parte del filtro
    If vAccion <> "" Then
        miFiltro = "AND [Accion]='" & vAccion & "'"
    End If
        'Creamos la cuarta parte del filtro
    If vMenor <> "" Then
        miFiltro = "AND [Menor]='" & vMenor & "'"
    End If
    If vFamilia <> "" Then
        miFiltro = "AND [Familia]='" & vFamilia & "'"
    End If
    vLargo = Len(miFiltro)
    If vLargo > 0 Then
        miFiltro = Right(miFiltro, vLargo - 4)
    End If
        'Aplicamos el filtro al formulario
    Me.Filter = miFiltro
    Me.FilterOn = True
End Sub

y un  boton para lanzar el informe sobre los resultados:

Private Sub cmdImprimir_Click()
    DoCmd.OpenReport "InfIntervencionDoble", acViewPreview, , Me.Filter
End Sub

Funcionar funciona correctamente pero a veces el informe se me queda pillado con el filtro, me explico tengo un cmd que me borra el filtro y en el formuario me lo hace bien pero si filtro resultados y lanzo el informe luego aunque borre el filtro y hago otro filtro el informe se queda pillado con el filtro anterior, tengo que salir del formaulario y volver a entrar para que carge correctamente esto es normal?

1 Respuesta

Respuesta
1

Kike: El código del filtro no lo he repasado, porque ya partimos que va bien.

Para el Informe: Declara Una Variable Publica e un Modulo Standard.

En mi caso siempre tengo uno que le llamo >> MdlVariablesPubicas, pero puede ser cualquiera.

Public NombreInforme As String 'Te valdrá para llamarla desde otros sitios

Private Sub BtnVistaPrevia_Click()
On Error GoTo VistaPrevia_Click_TratamientoErrores

NombreInforme ="InfIntervencionDoble"

DoCmd.OpenReport NombreInforme, acPreview

If MsgBox("Deseas enviar a impresión?", vbYesNo) = vbYes Then
DoCmd.OpenReport NombreInforme
End If

'Para que los Datos del Informe coincidan con los del Formulario
Reports(NombreInforme).Filter = Me.Filter
Reports(NombreInforme).FilterOn = True

VistaPrevia_Click_Salir:
On Error GoTo 0
Exit Sub
VistaPrevia_Click_TratamientoErrores:
MsgBox "Error " & Err.Number & " en Procedimiento.: VistaPrevia_Click de Documento VBA: Form_TarjetasTodasSubForm (" & Err.Description & ")"
Resume VistaPrevia_Click_Salir
End Sub 'VistaPrevia_Click()

Ya me dirás. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas