error funcion choose concatenada


(velneotuoficina3) #1

Hola tengo un listado de clientes con sus facturaciones anuales, quiero dividirlo por tramos, los que facturen más de 4.000€, entre 4000 y 2000, entre 2000 y 1000, entre 1000 y 500 y por último menos de 500€.

Para ello he creado 4 variables con permanencia en disco (Tramo1, Tramo2, Tramo3, Tramo4) para poner esos 4 importes en ellas ,ahora en la tabla he creado un campo fórmula donde quiero que me salga "A" para el primer tramo , "B" para el segundo, "C", "D" y "E"

He puesto esta fórmula pero al abrir el formulario me cierra la aplicación luego debe haber un error : (#ventas2009 es el campo que recoge el importe de las ventas. Donde debe estar ese error . Gracias

choose(#VENTAS2009>$TRAMO1@tuoficinavirtual.dat, "A", choose(#VENTAS2009 > $TRAMO2@tuoficinavirtual.dat & #VENTAS2009<$TRAMO1@tuoficinavirtual.dat, "B",choose(#VENTAS2009>$TRAMO3@tuoficinavirtual.dat & #VENTAS2009<$TRAMO2@tuoficinavirtual.dat, "C",choose(#VENTAS2009>$TRAMO4@tuoficinavirtual.dat & #VENTAS2009<$TRAMO3@tuoficinavirtual.dat,"D",choose(#VENTAS2009<$TRAMO4@tuoficinavirtual.dat,"E",0)))))

 

 


([N1] Pepeto) #2

Para empezar, porque no compruebas el importe facturado en ultimo lugar y simplemente le asignas el tramo "E", y lo digo porque la formula se me hace que es muy corta y podrias escribir una un poco mas larga, :D

 

Ahora en serio, que es muy tarde y las neuronas no dan para mas,

Has probado a reducir la formula un poquito, por ejemplo asi:

choose(#VENTAS2009>$TRAMO1@tuoficinavirtual.dat, "A", choose(#VENTAS2009>$TRAMO2@tuoficinavirtual.dat,
"B", choose(#VENTAS2009>$TRAMO3@tuoficinavirtual.dat,
"C", choose(#VENTAS2009>$TRAMO4@tuoficinavirtual.dat,"D", "E"))))

Vamos a ver, sin entrar en si se podria hacer de otras formas, porque compruebas para el tramo "B" si es menor que el $TRAMO1, por logica, no es necesaria esa comprobacion, ya que si se comprueba esa parte de la condicion, es por que la cantidad NO es mayor que el $TRAMO1, o seria asignado directamente al tramo "A", espero haberme esplicado.

Ademas, la ultima comprobacion, la del tramo "E", sobra, sencillamente porque, si no es del tramo "A", y tampoco del tramo "B", y tampoco del tramo "C", y ni siquiera es del "D", pues tiene que ser el "E" por narices. Asi que no necesita comprobacion, se pone a pelo.

Espero haberte ayudado,

Ahora no se me ocurre otra forma de hacerlo y ya es tarde, pero prueba a eliminar las piezas que sobran, y si funciona, es porque las piezas no servian para nada, ;)

un saludo

José


([N1] Pepeto) #3

Ah, se me olvidaba,

segun tu formula, si un cliente factura 4000, 2000, 1000, o 500 euros exactos, no pertenecera a ninguno de los grupos que has indicado, quiza podrias incluirlos en un nuevo grupo de clientes "L" (clientes en el Limbo)

malas horas son estas, jaja

un saludo.

 


(velneotuoficina3) #4

Hola, a ver gracias por contestar pero como me dices no funciona, de entrada tarda mucho en mostrar los resultados y sale "0" en todos los resultados, y luego tienes razón en los iguales como se hace para icluir el signo igual, gracias


([N4] innovadb) #5

Hola Velneotuoficina

 

No te compliques la vida y haz una función, la usas como contenido inicial y ya está. Solo tienes que pasarle como parametro el valor de las ventas del ejercicio que quieras. La variable del parámetro es VENTAS.

 

set RETORNO ""

If > (#VENTAS>($TRAMO1@tuoficinavirtual.dat-0.01))

set RETORNO "A"

elseif > (#VENTAS>($TRAMO2@tuoficinavirtual.dat-0.01))

set RETORNO "B"

set dato de retorno del proceso (RETORNO)

 

Un saludo


(velneotuoficina3) #6

Ok muchas gracias a los dos por cierto me salía cero porque tenía puesto fórmula numérica en vez de alfabética, por eso no me salía A-B-c