Filtro formulario e informe no funciona like

Lo primero agradecer vuestro trabajo, decir que os leo a menudo cuando necesito resolver cualquier duda y en la mayoría de los casos consigo resolver el problema sin necesidad de plantear ninguna duda.

En este caso no consigo encontrar la solución. El problema es el siguiente:

Tengo el siguiente filtro hecho mediante código:

Private Sub FiltroRuedasConsultaOperaciones()
Form_RuedasConsultaOperaciones.FilterOn = False
FiltroRuedasOperaciones = ""

If MatriculaVehiculo <> "" Then
FiltroRuedasOperaciones = FiltroRuedasOperaciones & " AND Matrícula like '%" & MatriculaVehiculo & "%'"
End If

vl = Len(FiltroRuedasOperaciones)
If vl > 0 Then
FiltroRuedasOperaciones = Right(FiltroRuedasOperaciones, vl - 4)
MsgBox FiltroRuedasOperaciones
End If
Form_RuedasOperacionesSub.Filter = FiltroRuedasOperaciones
Form_RuedasOperacionesSub.FilterOn = True

End Sub

De aquí me sale un filtro como el siguiente: Matrícula like '%5003%'

Pues bien este filtro me funciona en el formulario, el problema lo tengo cuando quiero aplicar este mismo filtro al informe, que no funciona y consigo averiguar porqué.

¿

2 Respuestas

Respuesta

Todo depende del tipo de datos sobre el que se aplica el filtro.

En Access el comodín es el asterisco (*), en entornos externos es (%).

Si se activa en Access la compatibilidad con SQL Server se cambia el comodín.

Para utilizar las consultas con bases de datos Access se seguirá utilizando el asterisco, pero en lugar de LIKE se utilizara ALIKE.

Si no hay 'datos externos' que requieran utilizar la sintaxis de DSQL Server (ANSI 92) lo adecuado es desactivar la compatibilidad y utilizar el asterisco como comodín.

Respuesta

En lugar de aplicar el filtro en el código del formulario, intente aplicarlo en el evento Open del informe. Esto puede ayudar a asegurar que el filtro se aplique correctamente antes de que se muestre el informe. Por ejemplo:

Private Sub Report_Open(Cancel As Integer)
Dim FiltroRuedasOperaciones As String
FiltroRuedasOperaciones = ""

If MatriculaVehiculo <> "" Then
FiltroRuedasOperaciones = FiltroRuedasOperaciones & " AND Matrícula like '*" & MatriculaVehiculo & "*'"
End If

Dim vl As Integer
vl = Len(FiltroRuedasOperaciones)
If vl > 0 Then
FiltroRuedasOperaciones = Right(FiltroRuedasOperaciones, vl - 4)
End If

Me.Filter = FiltroRuedasOperaciones
Me.FilterOn = True
End Sub

En Access, el símbolo de comodín para LIKE es * en lugar de %. Asegúese de usar * en lugar de % en su filtro, como en el ejemplo de código anterior.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas