Tengo una personalizacion hecha para la carga de notas de examen, donde agregamos 1 campo mas para poner la nota que va al Acta.(esta nota es el promedio entre la nota de regularidad y la nota del examen final)
Actualmente la nota del acta la ingesaban manualmente en el campo, realizando el promedio comentado anteriormente. Esta personalizacion funciona correctamente.
Ahora lo que queremos hacer es que ese promedio se realice automaticamente. Para esto probe poner la formula en un campo de texto de la DataWindow y funcioa correctamente.
La pregunta es como hago para que ese valor (el promedio) que tengo en un campo de texto se grabe en el campo de la nota del Acta.
Es decir como le asigno el valor del campo de texto al campo de la nota para que se grabe al confirmar. Ya que no encontre como aplicarle la formula al campo de la nota dle Acta.
Espero haber sido claro y puedan ayudarme, sino me consultan .
eso parece ser un computed field.
pensé que lo estabas haciendo desde la ventana.
el punto sería, donde almacenarías las dos notas que dan origen al promedio?
O sea, en la tabla de actas de examen tenés dos campos nota.
Si vos cargas en uno la nota del examen y en el otro la de cursada, donde va el promedio?
Si lo almacenas en alguno de ellos dos, al cargarse nuevamente te modificaría el promedio.
O entendí mal?
Puse un campo de texto y ahi le escribi la formula. No se cual es la funcionalidad del Computed Field, lo vi, lo probe, pero no entendi la utilidad.
Estoy personalizando d_detalle_acta_con_notas.
Donde me trae de sga_det_acta_curs la nota de cursada, y la personalizamos para que se pueda guardar a parte de la nota del acta en sga_detalle_acta.nota la nota del examen final en sga_detalle_acta.nota_2
Es decir la vez pasada agregamos el campo nota_2 para que se guarde la nota del examen final.
Lo que hacen actualmente los usuarios es cargar ambas notas en la datawindow. Solo que la nota del acta la generan haciendo el promedio entre la nota de cursada y la nota del examen final (en forma manual).
Ahora lo que quiero hacer es remplazar el campo sga_detalle_acta.nota (Nota del Acta) para que se calcule automaticamente el promedio de la nota de regularidad y la nota del Examen Final (al cargar esta ultima).
Y luego se guarde este promedio en el campo sga_detalle_acta.nota
Ahi fue mas detallada la explicacion.
Espero haberme explicado. Es mas facil telefonicamente.
Justamente un computed field sirve para poner las formulas que vos estás usando.
Lo que habría que hacer en ese caso es modificar la ventana que comanda la operación para que calcule la “nota”.
Calculo que en la operación de carga de notas o de impresión de acta con notas.
Cual sería la ventana a modificar. Como la reconozco en los parametros de acc_parametros.
Yo estoy haciendo :
select * from acc_parametros where operacion = ‘exa00018’
Pero no se cual es la ventana que controla la operación. Osea ahora estoy modificando d_detalle_acta_con_notas. Entiendo que tengo que poner la formula ahi, pero como le asigno el resultado del promedio al campo nota
Este tema me interesa mucho, ya que en una implementación tenemos que hacer algo que si no es igual, es muy parecido. Quizás nos podamos ayudar.
Y en varias oportunidades en los Comité de usuarios se plantearon la misma necesidad para alguna UN. Nadie lo habrá resuelto ya con una personalización?
No hay problema.
No se si hay una personalizacion ya hecha sobre esto.
Pero lo unico que me falta para poder terminarlo es como asigno el valor que estoy calculando (el promedio) en el Computed field al campo nota para que este se guarde en la base.
Lo mejor es hacerlo desde la ventana, yo no usé computedfield porque es readonly.
Lo que hice fue ponerle la expresión en el tag del campo texto (llámese nota_2, que tiene que tener tabindex=0) y luego atrapé el evento itemfocuschanged del control (o controles) del cual depende nota_2 y usé lo siguiente
ls_eval = “evaluate('” + nota_2_tag + “',” + string(row) + “)”
data = this.Describe(ls_eval)
dw1.uof_SetItem(row,“nota_2”,data)
Saludos
Te hago un par de consultas a ver si entiendo.
Pusiste la expresion del calculo del promedio, en el Tag del campo de texto (Ej. nota_2) ?
Donde pusiste el resto? ls_eval = “evaluate('” + nota_2_tag + “',” + string(row) + “)”
data = this.Describe(ls_eval)
dw1.uof_SetItem(row,“nota_2”,data)
Si entiendo bien las 3 lineas de arriba hacen respectivamente:
Se guarda el calculo en “Is_eval”
Se guarda el dato en “data”
Se setea el valor de “data” en “nota_2”
Suponiendo que nota_2.tag contiene una referencia a otro control, digamos nota_1, las líneas las puse en el evento itemfocuschanged disparado por nota_!.
Entendés bien lo que hacen las tres líneas.
Saludos