Campo computed

Llamo 2 tablas en una misma datawindow GRID donde los registros están agrupados por producto, el cual le he agregado un campo computed de total, ahora como podría este campo computed total pasarlo o actualizarlo a un campo llamado saldo de la tabla 2 que esta en una columna en este mismo datawindow grid, ¿cómo seria el script y en que evento lo pondría o en la misma grid?

1 respuesta

Respuesta
1
Cuando en un DW se inserta 2 o más tablas, por defecto el Dw esta desactivado la opción UPDATE.. esto debe activarse manualmente en el menu ROWS>UPDATE PROPERTIES ... en esa se debe de seleccionar la tabla 2 la cual sera la tabla por defecto a actualizar, ya que es ahí donde se quiere actualizar el saldo.
Ahora, sugiero crear un botón donde ejecutar el evento de actualizar... pero eso depende como quieras que funcione, o simplemente se puede ejecutar ele ventó cada vez que se modifique algún campo.
Por lo que entiendo tienes un compute total. Si este compute es total de todo el DW no tenemos problemas. Ya que para acceder a este valor simplemente es lo siguiente.
Suponemos que el compute le pusimos el nombre c_total (por defecto dice compute_x, dependiendo de la cantidad por de computes creados en el DW).
Entonces...
long ll_total
ll_total = dw_1.object.c_total[1]
Ahí tenemos almacenado el total en una variable. Y por ultimo solo es cuestión de asignarle ese valor al campo de la tabla 2
dw_1.setitem(nro_fila, 'saldo',ll_total).
OJO... aquí esto no es totalmente correcto. Ya que como están un conjunto de detalles de productos, se tendría que hacer una corrida he ingresar uno a uno el stock... esto porque al momento de poner 02 tablas en el DW, uno de las tablas los registros son repetitivos...
LO RECOMENdABLE, si en el DW solo se muestra el detalle de un solo producto. Es fácil, podría hacerse con SQL embedido un update:, poniendo el valor de la variable ll_total.
update tabla2
set saldo = :ll_total
where producto = :codigo_producto;

Pero si en el DW existe varios productos, y lo que se quiere es actualizar el stock por producto, primero es guardar el DW con los valores ingresados, si el update es satisfactorio.
update tabla2
set saldo = p.saldo
from (select codigo_prod, sum(cantidad) as saldo
          from tabla1
          group by codigo_prod) p
where tabla2.codigo_prod = p.codigo_prod;
Aquí lo que se esta haciendo es una vez guardado el DW internamente calcular los totales por producto y actulizo el saldo en la tabla 2.
Luego finalizo con un retrieve del DW donde ya muestra los stock en la tabla2.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas