MySQL - AYUDA REFRESCAR FOOTER

 
Vista:

AYUDA REFRESCAR FOOTER

Publicado por Juan Morales (2 intervenciones) el 25/08/2011 22:37:32
Amigos antes que nada un saludo todos, tengo un problema y ojala puedan ayudarme,
estoy haciendo un programa con mysql , fwh y harbourd, con la version liberada 6.12
invenstigue en la red. y pude hacer el programa con el ejemplo.

el programa muestra el recordset de una tabla en un browse, correctamente con sus respectivo
total del monto en el Footer, desde esa ventana envio una funcion para añadir registros, el cual funciona bien, porque actualiza el recordset, y el registro tambien se muestra en el browse, pero lo que no he podido hacer es que el monto se me refresque en el FOOTER, iicialmente sumo con una funcion anexa a la columna donde muestro el campo monto.. y lo hace bien ,pero despues no..y no logro hacerlo funcionar ojala ustedes ouedan ayudarme.. les dejo laparte del fuente para que lo observen y me den una mano.. muchas gracias de antemano amigos..

------------------------------------------------------------------------------
FUNCTION ISALPRO(oWPpal) // CARGA SALDOS *------------------------------------------------------------------------------


local oBrw, cAlias,oCol:=array(6)
local oSay ,oBar,lSalvar:=.T.,zcuenta:="", wFlag:=.T.


Public nTotal


// -- Creamos RecordSet----
TRY
oRd:=TOleAuto():New("adodb.recordset")
CATCH oError
MsgStop( "No se ha podido crear el RECORDSET de Saldos iniciales !", oApp:cAplicacion)
ShowError(oError)
oRd:= NIL
RETURN(.F.)
END
oRd:CursorLocation := adUseClient
oRd:CursorType := adOpenDynamic
oRd:LockType := adLockOptimistic
oRd:Source := "SELECT * FROM WGESINI ORDER BY IDCONDO,IDLINE"
oRd:ActiveConnection(oApp:oCon)
TRY
oRd:Open()
CATCH oError
MsgStop( "No se ha podido abrir el RECORDSET de Saldos iniciales !", oApp:cAplicacion)
ShowError(oError)
RETURN(.F.)
END
//--



DEFINE WINDOW oWnd MDICHILD OF oWPpal TITLE "MOVIMIENTO DE SALDOS INICIALES PROPIETARIOS" ;
FROM 5,5 TO 600,650 PIXEL



DEFINE BUTTONBAR oBar _3D SIZE 30, 47 OF oWnd

DEFINE BUTTON OF oBar FILENAME "\WSISAM32\BMP\B_NEW.BMP" NOBORDER ;
TOOLTIP "Crear Nuevo Sdo.Inicial" ;
ACTION (GETSAPRO(.T.,1),oBrw:REFRESH(),oBrw:Gotop(),oWnd:UPDATE(),oWnd:Refresh())


DEFINE BUTTON OF oBar FILENAME "\WSISAM32\BMP\B_SAL.bmp" NOBORDER ;
TOOLTIP "Salir";
GROUP ;
ACTION (BSALSAPR(),oWnd:End())

oBrw := TXBrowse():New( oWnd )

oBrw:nColDividerStyle := LINESTYLE_INSET
oBrw:nRowDividerStyle := LINESTYLE_INSET
oBrw:lColDividerComplete := .t. //completa pintado sobre el footer cuando lineas no llenan todo el browse

oBrw:nHeaderHeight := 30 //Altura cabeceras de col
oBrw:lFooter := .t. //Que tendrá footer
oBrw:nFooterLines := 1 //Lineas del footer
oBrw:nFooterHeight := 24 //Altura del Footer
oBrw:lRecordSelector := .t. //poner o no, COL de la flechita de la izq



oBrw:bClrHeader := {|| { nRGB(0 , 0,153), nRGB(192,192, 192 ) } } // GRIS SILVER CLARO

oBrw:bClrFooter := oBrw:bClrHeader
oBrw:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } } // colores para lineas normales
oBrw:bClrSel := {|| { nRGB(255,255,255), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco
oBrw:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(248,195, 34) } } // para barra de linea selecc cuando el control tiene el foco

oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL //solo ilumina la celda actual

oBrw:nRowHeight := 20 //altura entre lineas

oBrw:lFastEdit := .f.


oCol[5]:= oBrw:Addcol()
oCol[5]:bStrData := {|| IF(oRd:BOF() .AND. oRd:EOF(),SPACE(1),TRANSF(oRd:Fields("MONTO"):Value,"99,999,999.99"))}
oCol[5]:cHeader := "Monto"
oCol[5]:nEditType := 0
oCol[5]:nHeadStrAlign := AL_RIGHT
oCol[5]:nDataStrAlign := AL_RIGHT
oCol[5]:nWidth := 100

oCol[5]:nFootStrAlign := 1
oCol[5]:cFooter := transform((ntotal:=totSal2(oRd)),"9,999,999,999.99")

oBrw:SetAdo(oRd)
AEVAL(oBrw:aCols,{|oCol|oCol:bLClickHeader:={|nmRow, nmCol|OrdenMi(oBrw,oBrw:MouseColPos( nmCol ),oBrw) }})


oBrw:CreateFromCode(200)

oWnd:oClient:=oBrw


ACTIVATE WINDOW oWnd ON INIT oBrw:SetFocus()


RETURN NIL

*------------------------------------------------------------------------------
FUNCTION TotSal2(oRd)
*------------------------------------------------------------------------------
local nTotal2:=0


IF oRd:BOF() .AND. oRd:EOF()
ELSE
oRd:MoveFirst()
xV:=oRd:RecordCount()
if xV >= 1
DO WHILE .NOT. oRd:EOF()
nTotal2+= oRd:Fields("MONTO"):VALUE
oRd:MoveNext()
ENDDO
oRd:MoveFirst()
endif
Endif

RETURN(nTotal2)


*** hasta aqui funciona bien pero al agregar registros no se como actualizar el total del ffoter

//=================================
FUNCTION GETSAPRO(Nuevo,VW)
//=================================

IF lSalvar


IF Nuevo = .t.
oRg:ADDNEW() // crea un nuevo registro en blanco
oRg:Fields("IDCONDO"):value := SPACE(10)
oRg:Fields("FEDESDE"):value := DATE()
oRg:Fields("FEHASTA"):value := DATE()
oRg:Fields("GASTOCO"):value := 0
oRg:Fields("GASTONC"):value := 0
oRg:Fields("COBROS"):value := 0
oRg:Fields("STATUS"):value := space(1)

ENDIF

oRg:Fields("IDCONDO"):value := VIDCONDO
oRg:Fields("FEDESDE"):value := VFEDESDE
oRg:Fields("FEHASTA"):value := VFEHASTA
oRg:Fields("GASTOCO"):value := 0
oRg:Fields("GASTONC"):value := 0
oRg:Fields("COBROS"):value := 0
oRg:Fields("STATUS"):value := VSTATUS

oRg:UPDATE()

oRg:Refresh()
oRg:REQUERY()

ENDIF
RETURN


EL REGISTRO SE MUESTRA EN EL BROWSE Y SE ACTUALIZA EL RECORDSER PERO ME FALTA REFRESCAR EL FOOTER.. OJALA PUEDAN AYUDARMEN.. GRACIAS..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder