Sumatoria

Que tal mira mi inquietud es la siguiente
trengo un datawindows con los campos
código descripción cantidad precio importe
ahora el problema es que quiero sumar el campo importe y que em aparezca en un sle.text y si voy agrgando que se incremente auotmaticamente y si borro una fila que me dismminuya automaticamte alguna ayuda

2 respuestas

Respuesta
1
Esto ya me lo habías consultado. Te pondré el mismo código de ejemplo solo que recalcare que esto lo hagas en un evento.. ya sea en el dw o en window.
Tienes que crear un evento .. de preferencia el en window, vas al open de la ventana. Luego notaras que en la parte superior de donde tu codificas, tienes dos combos.
La 1ra (a la izquierda) corresponde a los controles, notaras que esta en el window, y la 2da de la derecha corresponde a los eventos. Dale clic al de la izquierda, delizate hasta el primer item del combo. Y encontraras "(new event)", se te mostrara una especie de cabecera, ubicate en el campo "Event name" ponle ue_calcular, este nombre llevara el nuevo evento. Luego dirigite a la parte inferior para codificar y coloca el siguiente código
//Esto asumiendo que el importe ya esta incluido el igv.
int li_fila
dec(2) ldec_subtotal=0,ldec_igv=0,ldec_total=0
dw_1.accepttext()
if dw_1.rowcount() > 0 then
   for li_fila = 1 to dw_1.rowcount()
        ldec_total = ldec_total + dw_1.getitemstring(li_fila,'importe')
   next
   ldec_subtotal = ldec_total / (1.19) //Desgregando el igv
   ldec_igv = ldec_total - ldec_subtotal
end if
sle_subtotal.text = string(ldec_subtotal,"#####0.00")
sle_igv.text = string(ldec_igv,"#####0.00")
sle_total.text = string(ldec_total,"#####0.00")
//Obiamente este vento tendrias que invocarlo cuando agregas o quitas filas nuevas en el dw
Luego grabas.. y ahora lo que te quedaría hacer es que en tu botón insertar o eliminar items. Agregar al final:
event ue_calcular( )
Excelente respuesta ahora tengo otra inquietud
Quiero que el dw_1 siempre quede en cuadricula y no en blanco porque cuando borro los items me queda en blanco y no puedo digitar algún dato alguna ayuda sobre eso gracias
Asumiendo que tipo dw es tipo grid..
Si deseas que el tipo no se quede en blanco. La única manera es que tengas que hacer insertrow()... aparte de esto tendrías que considerar validar... diversas cosas.
Por ejemplo: en ue_calcular.. tendrías que validar que la fila que valla a leer no se vacía. O en tu botón grabar.. validar que no grabe la fila en blanco...
Obviamente el usuario final del sistema, no toma las mismas consideraciones que el desarrollador. De llenar la linea en blanco antes de grabar.
Si de todas maneras piensas hacer esto, considero que te bastaría hacer tanto un dw_1. Insertrow(0) en el botón "Nuevo" (asumiendo que lo usas), y también podrías poner la misma linea en tu botón de eliminar fila. Más o menos así.
if dw_1.rowcount() < 1 then //Solo si Dw sta vacio
dw_1.insertrow(0)
end if
Es una idea.. no se si se acomode exactamente a tu proyecto o a tu idea!
Sugerencia.. cualquier otra pregunta nueva distinta a la pregunta original.. finaliza la ya respondida y crea una nueva pregunta.
Respuesta
1
Veamos si entendí tu pregunta.
En la datawindow existe un evento que se llama itemfocuschanged, en el cual debes colocar un código similar al siguiente
double valor_importe
valor_importe=double(dw.getitemnumber(dw.getrow(),"importe"))
if valor_importe > 0 then
valor_importe=valor_importe+double(sle.text)
sle.text=string(valor_importe)
end if
*Esto hara que el sle cambien de valor cuando en importe se coloque el costo y cambies a otra linea.
Cualquier otra duda o consulta con gusto
execelñente tu res`puesta ahora tengo otra duda
TENGO UN DATAWINDOWS DW_1 EL CUAL QUIERO QUE SIEMPRE SE QUEDE EN CUadritos tipo tabla porque cuando borro los items se me queda en blanco y no puedo digitar alguna ayuda ojala me ayas enetendido
Veamos, mira si dejas varias filas en tu dw y le haces update al mismo te daría un error, lo que te recomiendo es crear un botón en el cual tengas el siguiente codigo; dw. Insertrow(0) previo a debes colocarle su transactionobject, o si no quieres en un botón en un evento de chance, o bien en la ventana que creas hay un evento que involucra las teclas key o keypresed, puede usar el enter para que cuando le den enter también se haga el insertrow.
Cualquier duda con consulta con gusto.
Solo te pido que si necesitas hacer otra pregunta cierres esta y abras una nueva

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas