Expresión demasiado compleja en access

Tengo esta expresión :
=SiInm([COLOR]="BLACK","Blk",SiInm([COLOR]="BLUE","BLU",SiInm([COLOR]="BEIGE","BEI",SiInm([COLOR]="BROWN","BRN",Siinm([COLOR]="CLR.COPPER","CLRCU",Siinm([COLOR]="COPPER","CU",Siinm([COLOR]="GOLD","GLD",Siinm([COLOR]="GREEN","GRN",Siinm([COLOR]="GRAY","GRY",Siinm([COLOR]="LT.BLUE","LBLU",Siinm([COLOR]="L.GREEN","LGRN",Siinm([COLOR]="MET.GRAY","MGRY",Siinm([COLOR]="RED","RED",Siinm([COLOR]="SUPER BROR","SBRZ",Siinm([COLOR]="SILVER","SN",Siinm([COLOR]="WHITE","WHT",Siinm([COLOR]="YELLOW","YEL",0)))))))))))))))))
Y access me dice que es demasiado compleja como soluciono gracias por tu ayuda

1 Respuesta

Respuesta
1
Buff!, vaya expresión, realmente es muy compleja
Te planteo dos soluciones:
- Crea una tabla de diccionario, es decir, dos campos, uno con COLOR, y otro con Abreviatura, en la que tengas las correspondencias entre colores y sus abreviaturas. Si los datos dependen de una consulta, añádele esta tabla y enlaza por el campo color, donde pretendas mostrar la función, pon el campo Abreviatura
- Crea un módulo, y crea en él una función pública, por ejemplo:
Public Function AbrevColor(nColor AS String) AS String
   Dim salida As String
    if nColor = "Black" Then
        salida = "Blk"
    EndIf
    if nColor = "Blue" Then
        salida = "BLU"
   EndIf
   rem -------- repite lo mismo para los otros colores
   AbrevColor = salida
End Function
Guarda el módulo con el nombre que quieras, y recuerda que es muy importante que la función sea pública, sino Access no la encontrará
En el campo de la consulta pones, en el nombre del campo
abrColor: AbrevColor([Color])
Ten en cuenta que:
Usa la primera opción si:
- Piensas añadir más colores y/o
- Piensas dejar que lo use un usuario (puedes dejar que entre sus propias correspondencias)
- No quieres liarte a programar
Usa la segunda opción si:
- No tienes pensado añadir más colores (por la incomodidad que representa modificarlo)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas