CAMPO CALCULADO DEPENDIENDO DE LOS VALORES DE OTROS CAMPOS


([N1] sistemasitp) #1

Qusiera tener un campo tipo formula la cual depende de los valores de otros campos. Me explico tengo en una tabla uncampo llamado final, y diez campos numericos desde n1,n2,..., n10. final=promedio de los campos n1 hasta n10 si estos campos tienen valores mayores que 10 y menores que 50, de lo contrario sera el promedio solamente de los campos que cumplan con esta condición, como puedo hacer esto, si alggien sabe le agradezco


([N1] sistemasitp) #2

se me olvidaba el usuario por medio de una rejilla alimenta los valores de n1...n10 y debe ver el resultado del campo final a medida que va ingresando los valores. gracias


([N1] Pepeto) #3

A tu primera pregunta, el promedio se calcula tal cual:
Pero como tienes que comprobar los valores entre un rango debes usar CHOOSE():

#PROMEDIO = ( choose((#N1>10)&(#N1<50),#N1,0)+choose((#N2>10)&(#N2<50),#N2,0)+++++choose((#N10>10)&(#N10<50),#N10,0) ) / (( ((#N1>10)&(#N1<50))+((#N2>10)&(#N2<50))+++++((#N10>10)&(#N10<50)) ) | 1 )

(la formula es excesivamente larga asi que no la voy a escribir completa, pero no creo que tengas demasiado problema en terminarla)

A tu segunda pregunta, solo debes incluir una columna en la rejilla para mostrar el #PROMEDIO y se recalculara automaticamente

un saludo
José Luis
http://www.ascsl.com


([N1] sistemasitp) #4

gracias lo probaré creo que era lo que necesitaba


([N1] sistemasitp) #5

Como podría aplicar una función para lo siguete:

si el valor de un campo tiene un valormenora a 35 toma el valor malo; si el valor es >35 y menor < 45 tomar el valor "bueno" y si tiene un valor mayor a 45 excelente, y que se actualice tan pronto se le ingrese el valor al campo de condición


([N1] Giuseppe::Komenco) #6

@sistemasitp

Función choose:
choose(condicion, datoSi, datoNo)

choose(#CAMPO<35,"malo",choose(#CAMPO>35 AND #CAMPO<45,"bueno",choose(#CAMPO>45,"excelente",)))

Por ejemplo.


([N1] sistemasitp) #7

Mil gracias su ayuda siempre tan precisa.


([N1] sistemasitp) #8

choose(#NL01<35,"M",choose(#NL01>35 & #NL01<45,"B","E"))

SI NL01 TOMA EL VALOR DE 47 DEBERIA DAR COMO RESULTADO E PERO DA COMO RESULTADO B PORQUÉ?


([N1] Pepeto) #9

1. Te faltan los parentesis en la comprobacion de la condicion, y por eso el resultado no es correcto
2. ¿Que pasa si el valor es = 35? :(

un saludo
José Luis
http://www.ascsl.com


([N2] gegeo) #10

Prueba poniendo entre parentesis cuando das dos opciones al valor:

choose(#NL01<35,"M",choose((#NL01>35) & (#NL01<45),"B","E"))

Saludos ;)


([N1] Giuseppe::Komenco) #11

Prueba con
choose(#NL01<35,"M",choose(#NL01>35 & #NL01<45,"B",choose(#NL01>45,"E",)))

EDITO:
Cierto, no había visto el "E" en la "negación" del segundo choose


([N1] sistemasitp) #12

Lo solucione así,

choose(#NL01<35,"M",choose( #NL01<45,"B","E"))

aunque queda el sinsabor. o depronto el choose no acepta validaciones con los operadores logigos?


([N1] Pepeto) #13

Lamento contradecirte, pero si utilizas los parentesis, puedes utilizar los operadores logicos perfectamente en la condicion CHOOSE.

un saludo
José Luis
http://www.ascsl.com


([N2] gegeo) #14

Si acepta validaciones con los operadores logicos, pero si no pones entre parentesis los valores, tratara como parte de la condicion el operador logico, en este caso el &

Saludos ;)


([N1] sistemasitp) #15

Si funciona pero la dejare con las condiciones ya que estos acotan los volores como quiero:

<35 , <45 y el resto con esto abarcaría lasigualdades, mil gracias...


([N1] Pepeto) #16

@Gegeo

2-0, jejeje


([N2] gegeo) #17

@Gegeo

2-0, jejeje

Mecachis :D