MakeTotals en Columna editable
Posted: Mon Jan 02, 2017 9:00 pm
Feliz año nuevo 2017, a todos.
Bueno, este año me ha recibido con un problema que considero pequeño, pero llevo horas tratando de resolverlo.
En un xbrowse de solo 3 columnas, la primera es editable.
Al introducir un valor en la col editable (1ra), los calculos para las otras lo hace bien.
Sin embargo el MakeTotals() actua extrañamente: Duplica en el :nTotal de la 1a columna, el valor introducido.
Agradeceré cualquier sugerencia o solución que puedan brindar.
Aqui el codigo para prueba:
Si observan, el msginfo presenta el valor correcto, pero en el footer es erroneo.
Saludos.
Bueno, este año me ha recibido con un problema que considero pequeño, pero llevo horas tratando de resolverlo.
En un xbrowse de solo 3 columnas, la primera es editable.
Al introducir un valor en la col editable (1ra), los calculos para las otras lo hace bien.
Sin embargo el MakeTotals() actua extrañamente: Duplica en el :nTotal de la 1a columna, el valor introducido.
Agradeceré cualquier sugerencia o solución que puedan brindar.
Aqui el codigo para prueba:
- Code: Select all Expand view
- //---------------------//PRUEBA MAKETOTALS() SOBRE COL EDITABLE CON TOTAL EN FOOTER
Function ColFootTotal()
local cOldSele:=Select()
local oDlg, oBrw
LOCAL bSayMontos := {|| oBrw:MakeTotals(),oBrw:Refresh(), msginfo(oBrw:pventaus:nTotal) }
LOCAL nTCambio := 29.30, n
DBCREATE("MAESTRO",{ {"PVENTAUS","N", 10,2 } ,;
{"TCAMBIO" ,"N", 10,4 },;
{"PVENTA" ,"N", 10,2 } })
DBUSEAREA(.T.,,"MAESTRO","MAESTRO",.F.)
dbselectarea("MAESTRO")
for n := 1 to 5
Maestro->(dbAppend())
Maestro->pventaus := 0
Maestro->tcambio := 0
Maestro->pventa := 0
next
dbgotop()
DEFINE DIALOG oDlg SIZE 600,500 PIXEL
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
DATASOURCE "MAESTRO" ;
COLUMNS "PVENTAUS","TCAMBIO","PVENTA" ;
FOOTERS CELL LINES NOBORDER
WITH OBJECT oBrw:PVENTAUS
:cEditPicture := "999,999.99"
:nEditType := EDIT_GET //1
:lTotal := .t.
:nTotal := 0
:nFooterType := AGGR_SUM
:bOnPostEdit := {|oCol,xVal,nKey| Maestro->TCAMBIO := nTCambio,;
Maestro->PVENTAUS:=xVal,;
Maestro->PVENTA:=Round(xVal*nTcambio,2),;
Eval(bSayMontos) }
:bEditValid := {|oGet| oGet:Value > 0 }
END
WITH OBJECT oBrw:PVENTA
:lTotal := .t.
:nTotal := 0
:nFooterType := AGGR_SUM
END
oBrw:MakeTotals()
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED
Maestro->(DbCloseArea())
Ferase("Maestro.dbf")
dbSelectArea(cOldSele)
return nil
Si observan, el msginfo presenta el valor correcto, pero en el footer es erroneo.
Saludos.