Criterio condicional no funciona.

Tengo una consulta con un campo llamado Tipo. Este campo contiene varios registros: "Nuevo", "Usado" y "Sin definir". Bien, quiero hacer una consulta de parámetros con el parámetro [Tipo de vehículo] con una condicional, de forma que si escribo "Nuevo" me devuelva los registros cuyo tipo es "Nuevo" y si le digo otra cosa (y aquí viene el meollo de la cuestión), me devuelva todos los registros excepto "Nuevo".
De momento puse en criterios:
SiInm([Tipo de vehículo]="Nuevo";"Nuevo";No "Nuevo")
La 1ª parte funciona a la perfección, lo que no funciona es la 2ª. También, entre otras, he probado lo siguiente:
SiInm([Tipo de vehículo]<>"Nuevo";No "Nuevo";"Nuevo")
Aquí funciona la 2ª parte y no la 1ª.
También he probado:
SiInm([Tipo de vehículo]="Nuevo";"Nuevo";[Tipo]<>"Nuevo") ya que está en la columna "Tipo".
A ver si me puedes echar un cable.

1 respuesta

Respuesta
1
Tu problema viene porque estás operando con cadenas de texto, y en este caso este tipo de dato no es el más adecuado para filtrar. Si en el SiImn metes el resultado para falso dentro de las comillas, la consulta lo entiende como un literal, y si lo metes fuera de las comillas no acaba de entender que se trata de una función (depende de qué funciones, pero no entraremos en detalles).
Pero como nosotros somos más listos que Access ;) vamos a recurrir a un truco para conseguir lo que queremos: vamos a convertir los valores de texto en un equivalente numérico, adaptado a nuestras necesidades. Te explico cómo hacerlo:
1.- En una columna vacía del grid de la consulta, en la primera línea (la correspondiente a Campo:), escribes lo siguiente:
Valor: SiInm([Tipo]="Nuevo";0;1)
2.- En esa  misma columna, pero en la línea de criterios, escribes lo siguiente:
SiInm([Tipo de Vehículo]="Nuevo";0;1)
3.- Borra tu criterio <SiInm([Tipo de vehículo]="Nuevo";"Nuevo";No "Nuevo")> que tenías hasta ahora.
Aunque lo puedas intuir, te explico lo que hemos hecho:
- Hemos creado un nuevo "campo", llamado Valor, que devuelve un 0 si el campo [Tipo] es "Nuevo" y devuelve un 1 en el resto de casos.
- A su vez, el filtro le dice que te muestre, si has escrito "Nuevo" en el parámetro [Tipo de Vehículo], sólo los Valor=0, y si no que te muestre sólo los Valor=1
Por último, si a la nueva columna creada le desmarcas el check "Mostrar", no te mostrará el campo Valor, pero te seguirá actuando "por detrás".
Bueno, ya me dirás qué tal.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas