Consulta Expresión Demasiado Compleja Access

Soy usuario inicial de Access y quiero utilizar la expresión "SILNM"
Tengo una base de datos de vehículos por VIN.
En el VIN de un vehículo el 10mo. Dígito me indica el año de fabricación, es decir que si es a=2010, b=2011, c=2012; etc...
Cuando coloco la función:
Año: SiInm([letra]="V";"1997";SiInm([letra]="W";"1998";SiInm([letra]="X";"1999";SiInm([letra]="Y";"2000";SiInm([letra]="1";"2001";SiInm([letra]="2";"2002";SiInm([letra]="3";"2003";SiInm([letra]="4";"2004";SiInm([letra]="5";"2005";SiInm([letra]="6";"2006";SiInm([letra]="7";"2007";SiInm([letra]="8";"2008";SiInm([letra]="9";"2009";SiInm([letra]="A";"2010";SiInm([letra]="B";"2011";SiInm([letra]="C";"2012";SiInm([letra]="D";"2013";SiInm([letra]="E";"2014";SiInm([letra]="F";"2015";SiInm([letra]="G";"2016";SiInm([letra]="H";"2017";SiInm([letra]="J";"2018";SiInm([letra]="K";"2019";SiInm([letra]="L";"2020";SiInm([letra]="M";"2021";SiInm([letra]="N";"2022";SiInm([letra]="P";"2023";SiInm([letra]="R";"2024";"Sin Info")))))))))))))))))))))))))))

Access devuelve la leyenda: "Expresión Demasiado Compleja"

¿Qué alternativa tengo?

1 respuesta

Respuesta
2

Access sólo permite 10 Siinm encadenados. Lo mejor es hacerlo en código y usar select case. Vamos a suponer que tienes un formulario donde en un control tipo texto vas a escribir la letra, y que este control se llama así, Letra. En sus propiedades-eventos-Después de actualizar, crea un procedimiento de evento y entre Private Sub y End sub puedes poner

select case letra

case is="V"

texto2=1997

Case is="W"

texto2=1998

case is="x"

texto2=1999

así hasta que termines y al final le pones

End Select

Personalmente haría una tabla con los campos Letra y Año. Pondría todos los datos, y en el formulario sustituiría el cuadro de texto Letra por un combinado donde eligiera la letra y automáticamente en el cuadro de texto Texto2 me pusiera el año.

De todas formas, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un par de ejemplos. Si lo haces, en el asun to del mensaje pon tu alias Iver Gutierrez, ya que si no sé quien me escribe no los abro.

Muchas gracias estimado Icue 

Pero mi información la tengo que extraer del VIN para lo que ya hice la fórmula:  Der(Izq([ventas 2017].[vin];10);1) de donde obtengo la letra del VIN.
Como menciono, todavía soy inexperto en este sentido y no conozco las propiedades o eventos.
Muchas gracias por tu predisposición y ayuda!

Es lo mismo, cuando hablo de un cuadro de texto Letra, es por ponerle un nombre. Primero, la expresión no es así como la tienes puesta. Si el campo se llama Vin, si quieres obtener el primer dígito de la derecha es

der([vin];1), si lo utilizas en consultas o como origen de un control

Con eso llega

Y en el caso que nos ocupa, yo pondría en el evento Después de actualizar del cuadro de texto Vin y suponiendo que el cuadro de texto donde quieres que te aparezca el año se llama también Año

Select case right([Vin],1)

case is="v"

año=1997

case is="w"

año=1998

etc..

End select

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas