Filtro en Formulario con subformulario

Tengo un Formulario con unos filtros que busca los registro en un subformulario,

El problema que tengo es que el filtro “CodigoTipo” cuando quiero ver un código que sólo tenga un número con una unidad, por ejemplo en 7, me trae el 7, 17, 27, 37 ……. Es decir; todos los códigos que contengan el num 7, Ahora bien si selecciono el código 17, sólo me busca los registros que son del código 17 y así en el 27,37 …….

Alguien me podria ayudar si tengo mal el código VBA que tengo:

Muchas gracias por vuestra colaboración

El código VBA que tengo en el Formulario es :

Private Sub cmdBuscar_Click()

    Dim sFiltro As String

    Dim sTipo As String         'T_TipoGasto - CodigoGasto

    Dim sPagador As String      'T_Pagador   - CodigoPagador

    Dim sFecha As String

    If Not IsNull(Me.txtTipo) And Me.txtTipo <> "" Then

        sTipo = "CodigoGasto LIKE '*" & Me.txtTipo & "*'"

    Else

        sTipo = ""

    End If

    If Not IsNull(Me.txtPagador) And Me.txtPagador <> "" Then

      sPagador = "codigoPagador LIKE '" & Me.txtPagador & "'"

      Else

      sPagador = ""

    End If

    If IsNull(Me.txtF_Inicio) And IsNull(Me.txtF_Final) Then

        sFecha = ""

    Else

        sFecha = "Fecha BETWEEN #" & Format(Nz(Me.txtF_Inicio, #1/1/1900#), "mm-dd-yyyy") & _

            "# AND #" & Format(Nz(Me.txtF_Final, #12/31/9999#), "mm-dd-yyyy") & "#"

    End If

    'Construyo el Filtro

    If sPagador <> "" Then

        sFiltro = sPagador

    End If

    If sTipo <> "" Then

    sFiltro = sTipo

    End If

    If sPagador <> "" Then

        If sFiltro <> "" Then

            sFiltro = sFiltro & " AND " & sPagador

        Else

            sFiltro = sPagador

        End If

    End If

    If sTipo <> "" Then

        If sFiltro <> "" Then

            sFiltro = sFiltro & " AND " & sTipo

        Else

            sFiltro = sTipo

        End If

    End If

    If sFecha <> "" Then

        If sFiltro <> "" Then

            sFiltro = sFiltro & " AND " & sFecha

        Else

            sFiltro = sFecha

        End If

    End If

    If sFiltro <> "" Then

        Me.BusquedaSubFormulario.Form.Filter = sFiltro

        Me.BusquedaSubFormulario.Form.FilterOn = True

    Else

        Me.BusquedaSubFormulario.Form.FilterOn = False

    End If   

End Sub

Private Sub cmdBorrar_Click()

With Me

    .txtF_Inicio.Value = Null

    .txtF_Final.Value = Null

    .txtTipo.Value = Null

    .txtPagador.Value = Null

    .FilterOn = False

End With

End Sub

1 respuesta

Respuesta
1

Pruebe con:

sTipo = "CodigoGasto =" & Me.txtTipo 

¡Gracias! 

Muchas gracias,  he colocado el código en la linea:

If sTipo <> "" Then
sFiltro = sTipo
End If
sTipo = "CodigoGasto =" & Me.txtTipo

y funciona bien ya que puedo escoger el código correctamente.

Pero cuando  quiero hacer  una nueva selección del filtro, primero borro lo que tengo, mediante un botos borrar,  para hacer una nueva consulta y me sale el siguiente error;

y tengo que salirme y volver a cargar el Formulario para hacer una nueva consulta.

Este es el código que utilizo  para borrar.
Private Sub cmdBorrar_Click()

With Me
.txtF_Inicio.Value = Null
.txtF_Final.Value = Null
.txtTipo.Value = Null
.txtPagador.Value = Null
.FilterOn = False
End With

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas