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
//---------------------//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.