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


0