Access - Error empleando filtro con VBA sobre un formulario

 
Vista:

Error empleando filtro con VBA sobre un formulario

Publicado por Daniel (3 intervenciones) el 26/08/2019 15:47:46
Hola,
Dispongo de un formulario que muestra una serie de datos provenientes de una tabla.
He creado una serie filtros en VBA que toman la variable desde cuadros combinados.
Por ejemplo una columna puede contener palabras como: Averia, calibracion, Lentitud.. y cuando modifico el cuadro combinado se activa el evento y me filtra correctamente, a continuacion pongo el codigo que utilizo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function filtrando()
    Dim T1, T2, T3, T4, T5, miFiltro As String
    Dim miContador As Integer
 
    Me.FilterOn = False
 
    If Me.cboTipo_evento <> "" Then
        If miContador = 0 Then
            miContador = 1
            T1 = "Tipo_Evento= """ & Me.cboTipo_evento & """"
        Else
            T1 = " AND Tipo_Evento= """ & Me.cboTipo_evento & """"
        End If
    End If
 
    miFiltro = T1 & T2 & T3 & T4 & T5
 
    'Lo aplicas al formulario
    Me.Filter = miFiltro
    Me.FilterOn = True
 
End Function

Sin embargo, cuando quiero filtrar por otra columna llamada recurso que contiene palabras como: L2J001, L2J002... me aparece:
Ell error '3075' en tiempo de ejecucion.
Error de sintaxis (falta de operador) en la expresion de consulta 'AND Recurso ="L2J001"

Este es el codigo que empleo para este cuadro combinado:

1
2
3
4
5
6
7
8
If Me.cboRecurso <> "" Then
    If miContador = 0 Then
        miContador = 1
        T5 = "Recurso= """ & Me.cboRecurso & """"
    Else
        T5 = " AND Recurso= """ & Me.cboRecurso & """"
    End If
End If

Cuando presiono en depurar me marca la fecha amarilla en la frase: Me.Filter = miFiltro

Alguien podria aportar algo de luz??

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error empleando filtro con VBA sobre un formulario

Publicado por Anonimo (3312 intervenciones) el 26/08/2019 21:57:35
Quizás si como marcador de que es un texto se utilizase la comilla simple el filtro funcionaria de la forma esperada.

En teoría el filtro de un formulario utilizar la variable FILTER del propio formulario y el filtro a aplicar se activa con: FilterOn = True

Si en la variable Filter no hay nada su longitud será cero, puede ser una forma de concatenar condiciones de forma condicional.

Un ejemplo (solo útil como ejemplo)
1
2
3
4
5
6
7
8
9
10
11
IF Me.Objeto1 <> "" then
  IF Len(Me.Filter) <> 0 then Me.Filter = Me.Filter & " And "
  Me.FIlter = Me.Filter & " Recurso = '" & Me.Objeto1 & "'"     ' objeto1 es un texto
  End IF
 
IF Me.Objeto2 <> "" then
  IF Len(Me.Filter) <> 0 then Me.Filter = Me.Filter & " And "
  Me.FIlter = Me.Filter & " Numero  = " & Me.Objeto2     ' objeto2 es numerico
  End IF
……..
Me.FilterOn = True
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar