¿Como calcular promedio en un Datawindows?

Tengo 2 consultas en power builder:

1- Tengo 4 campos en un datawindows, el primero se llama 1 eva, el segundo recuperatorio de 1 eva, etc.

Lo que necesito saber es como hago para que en caso de si la nota que se ingreso en el campo 1 evaluacion es mayor a 4, el campo recuperatorio de 1 evaluacion se inhabilite.

2- Teniendo los campos (1eva, Recu1eva, 2eva, Recu2eva), tengo otro campo que se llama promedio. Como puedo hacer para hacer que se calcule un promedio mediante las notas ingresadas en los campos (1eva, Recu1eva, 2eva, Recu2eva) .

¿En qué evento se puede hacer?

3 respuestas

Respuesta
2

El problema de inhabiltar el campo Recu1eva es que lo hace para toda la columna, te sugiero que en la propiedad protect del campo pongas el siguiente

if(int(1eva)>4,1,0)

Cesar muchas gracias por tu respuesta, me sirvió!

Te comento mi otra consulta:

Tengo una planilla de notas para alumnos por materia (4 tp + 4recuperatorios)

Me gustaría realizar el promedio por cada alumno, ¿cuál seria la forma de hacerlo? Sabiendo que si por ejemplo si aprobó los 4 tp, se saca un promedio de ese... Siempre puede variar, por que el alumno puede aprobar 2 tp bien, y los otros 2 con recuperatorios (pero las notas mal igual se guardarían)

Saludos!

Es que solo tendrías que editar las notas malas no ingresar nuevamente las notas

Respuesta
1

Por lo que estoy entendiendo quieres realizar lo siguiente:
if dw_data.getItemNumber(currentrow,'eva1') > 4 then
  dw_data.Object.recu1eva.enabled = false
end if
Esto lo haces dentro del evento rowfocuschanged
En cuanto al promedio podrías hacer que cuando cambie el foco de la fila este te promedie tus valores de cada uno de los campos, dentro también del evento rowfocuschanged, claro obteniendo previamente el valor obtenido de cada uno de ellos y al final asignárselo al campo promedio de tu datawindow.
Aquí yo te coloco un ejemplo que ocupo:
cal1 = dw_actas.getItemNumber(fila,"alumnos_actacal1")
cal2 = dw_actas. ...
IF ISNULL(cal1) OR cal1 = 0 THEN
else
ll_suma += cal1
ll_dividir += 1
END IF
if ll_dividir = 0 then
else
dl_promedio = ll_suma / ll_dividir
dw_actas.SetItem(fila,"alumnos_actapromedio",round(dl_promedio,1))
end if

Respuesta
1

Como te comenta +Cesar Otiniano lo mejor es cambiar la expressión de la propiedad protect de la columna.
En cuanto a calcular el promedio, otra opción para calcularlo es insertar en la DataWindow un campo computado (compute). Dentro de la expressión puedes poner

( 1eva + Recu1eva + 2eva + Recu2eva ) / 4

Luego cuanto tengas que grabar los datos, igualas esa columna promedio a lo que calcule ese compute y problema resuelto ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas