Problema a la hora de montar un filtro con LIKE

Estoy un formulario con un filtro para la extracción de informes.

Tengo un campo de longitud 4, que es el tipo de incidencia (texto), que en función del ámbito empieza por un número u otro:

Los que son tipo 0XXX son del ámbito A

Los que son tio por 1XXX son del ámbito B

Y así hasta 10 ámbitos

He montado en el formulario una serie de botones para seleccionar los ámbitos que se desean sacar en el informe, y aprovechando el hecho que cada ámbito empieza con un caracter peculiar, he pensado en aplicar el LIKE.

En VBA he puesto de momento sólo 2 botones para ir probando:

mifiltro = filtro del resto de campos que funciona correctamente

       If Me.TxtTipo0.Value = True Then
         codigo_incidencia = " AND [Codigo_Incidencia] like '[0]*' "
       End If

       If Me.TxtTipo1.Value = True Then
                codigo_incidencia = codigo_incidencia & " AND [Codigo_Incidencia] like '[1]*' "
       End If

          miFiltro = miFiltro & codigo_incidencia

La cuestión está en que:

Si sólo selecciono un botón, por ejemplo el ámbito A, me lista correctamente los que empiezan por 0

Si sólo selecciono el ámbito B, me lista los que empiezan por 1

Pero si clico los dos, me sale en blanco.

No sé si es un tema de comillas, que siempre me lío, o el hecho que no sé si se pueden hacer dos like sobre el mismo campo con distinto valor...

2 Respuestas

Respuesta
1

Javi: Me parece que 10 Botones es un poco exagerado para lo que pretendes, pero como siempre digo el sentar cátedra lo dejo para los catedráticos.

Si quieres usa la siguiente Alternativa que te propongo.

En tu Formulario añades un TextBox que por ejemplo vamos a llamar TxtIniCodigo

Entonces, en el After Update de ese TextBox pones algo así:

Private Sub TxtIniCodigo_AfterUpdate()
If Len(Me.TxtIniCodigo)>1 Then
    MsgBox “Has de entrar un solo dígito. Por Omisión  se pondrá Nulo”,vbCritical, “INFORMACION ERRONEA”
    Me.TxtIniCodigo = Null
End If
If IsNull(Me.TxtIniCodigo) Then
    Me.Filter = “”
    Me.FilterOn = False
Else
    Me.Filter = "Left([Codigo_Incidencia],1) = “& Me.TxtABuscar
    Me.FilterOn = True
End If
End Sub

Escribes el Número que quieras y te mostrará la Información filtrada. Saludos >> Jacinto

Si sólo es uno lo tengo controlado por botones... el problema es que "los jefes" quieren poder seleccionar más de un ámbito para ver las estadísticas según la selección que hagan.... y ya sabes que donde manda patrón.... XD

Entendido Javi: Al enviarte mi respuesta y actualizar para repasarla he visto que Sveinbjorn te ha contestado también. Para el caso que comentas creo que es más acertada su respuesta.

Mis saludos >> Jacinto

Respuesta
1

Obviamente te saldrá en blanco al hacer click en dos tipos de ámbito, pues nunca podrá empezar por 0 y por 1.

Tienes que cambiar el operador de union de los dos criterios de AND a OR, para que te muestre los que empiezan por 0 o los que empiezan por 1...

codigo_incidencia = codigo_incidencia & " OR [Codigo_Incidencia] like '[1]*' "

Saludos!


Una nueva web y foro de Access, pásate: http://nksvaccessolutions.com/ 

También lo había probado con el OR y sólo me salen los que empiezan por 0.

Incluso he probado de ponerlo "a pelo":

codigo_incidencia = " and [Codigo_Incidencia] like '[0]*' OR [Codigo_Incidencia] like '[1]*' "

y me sale lo mismo

¿Probaste a hacerlo sin los corchetes?:

codigo_incidencia = codigo_incidencia & " OR [Codigo_Incidencia] like '1*' "

No vaya a ser que los interprete como caracteres "literales".

El operador que tienes que usar para el filtro por varios valores en el mismo campo es OR, eso seguro.

Correcto.... son los corchetes!!!

sabía yo que tenía que ser una tontería tipo comillas o similar... siempre me pasa lo mismo.

Y sí, obviamente es con OR!!

Mil gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas