FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Totalizar columna en el footer en wbrowse de HDC
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Totalizar columna en el footer en wbrowse de HDC
Posted: Wed Nov 18, 2009 04:42 PM
Hace un tiempo, un amigo me pregunt贸 como colocar el total de una columna en el footer, francamente nunca hab铆a tenido necesidad de hacerlo, pero le mand茅 a un post del foro que refer铆a a algo parecido pero con un Array....

Como no recuerdo quien me lo pregunt贸, no se si obtuvo buenos resultados..... :-)
Lo cierto es que ahora soy yo el que necesita totalizar una columna de un browse en el footer (en el browse de HDC) y no doy con la soluci贸n. :-)



este es un peque帽o ejemplo que resume el c贸digo que uso:
Code (fw): Select all Collapse
#include "Fivewin.ch"

#include "FiveWin.ch"
#include "WColors.ch"

external dbfcdx, ordkeyno, ordkeycount, ordkeygoto

#define HA_LEFT 聽 聽0
#define HA_RIGHT 聽 1
#define HA_CENTER 聽2
#define VA_TOP 聽 聽 4
#define VA_BOTTOM 聽8
#define VA_CENTER 聽32
//----------------------------------------------------------------------------//

function Main()

聽 聽local oWnd, oLbx
聽 聽local cKey:= "Upper(Nombre)", oItem
聽 聽local cDefaultMsg:= "(C) 1994-2002, CeSoTech PC Solutions"
聽 聽local oFont, oSay
聽 聽
聽 聽SET DEFAULT TO ".\data"
聽 聽REQUEST DBFCDX
聽 聽RddSetDefault("dbfcdx")
聽 聽 聽
聽 聽DEFINE FONT oFont NAME GetSysFont() SIZE 0,-10 BOLD
聽 聽 聽
聽 聽use clientes
聽 聽index on &cKey to clientes

聽 聽DEFINE DIALOG oWnd FROM 0,0 TO 33,47 + 25 ;
聽 聽 聽 聽 聽 TITLE "Y el footer?" ;


聽 聽 聽 @.2,.2 LISTBOX oLbx FIELDS clientes->nombre , 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽clientes->Telefono, 聽 ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽Str(clientes->edad,2) ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽OF oWnd SIZE 280,210 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽HEADERS "Apellido y Nombres",;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"Telefono", 聽 聽 聽 聽 聽;
聽 聽 聽 聽 聽 聽 聽 聽"Edad" 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽SIZES 250,50,50

聽 聽 聽 oLbx:lAdjLastCol 聽:= .F.
聽 聽 聽 oLbx:bSeek 聽 聽 聽 聽:= {|| oLbx:DbfSeek(.T.) }
聽 聽 聽 oLbx:nLineHeight:= 25
聽 聽 聽 oLbx:lDrawFooters:=.t.
聽 聽 聽 oLbx:aFooters:={ "Total:", " ", {|| TotEdad() } }
聽 聽 聽 
聽 聽ACTIVATE DIALOG oWnd CENTERED

聽 聽RELEASE FONT oFont

return nil

//----------------------------------------------------------------------------//
Function GetSysFont() ; return "MS Sans Serif"
//----------------------------------------------------------------------------//

FUNCTION TotEdad()
聽 聽 LOCAL ntot:=0
聽 聽 DbEval( {|| ntot+=CLIENTES->Edad } )
RETURN Transform( ntot, "999,999" )


El Exe y el Prg lo encuentran en:
http://www.box.net/shared/gc06xk59ad
Aceptar茅 agradecido cualquier ayuda que puedan brindarme para alcanzar mi objetivo.

Gracias desde Ya.
Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Totalizar columna en el footer en wbrowse de HDC
Posted: Wed Nov 18, 2009 04:58 PM

Jose,
Porque no pruebas hacer estos cambios en tu codigo:

En donde tienes:
oLbx:aFooters:={ "Total:", " ", {|| TotEdad() } }

Cambialo por:
oLbx:aFooters:={ "Total:", " ", {|| TotEdad( oLbx ) } }

Luego en tu funcion TotEdad(), cambiala por:

FUNCTION TotEdad( oLbx )
LOCAL ntot:=0
DbEval( {|| ntot+=CLIENTES->Edad } )
oLbx:aFooters:={ "Total:", " ", Transform( ntot, "999,999") }
oLbx:Refresh()
RETURN .t.

Y me cuentas que tal.

Carlos Sincuir

Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Totalizar columna en el footer en wbrowse de HDC
Posted: Wed Nov 18, 2009 05:07 PM
Jose,
Por contestar r谩pido, no vi bien tu codigo.

Creo que lo que tienes que hacer es lo siguiente:

Sumar primero el total de edades:
Code (fw): Select all Collapse
function Main()

聽 聽local oWnd, oLbx
聽 聽local cKey:= "Upper(Nombre)", oItem
聽 聽local cDefaultMsg:= "(C) 1994-2002, CeSoTech PC Solutions"
聽 聽local oFont, oSay
  聽local nTot // <---- Agregado 

聽 聽SET DEFAULT TO ".\data"
聽 聽REQUEST DBFCDX
聽 聽RddSetDefault("dbfcdx")
聽 聽 聽
聽 聽DEFINE FONT oFont NAME GetSysFont() SIZE 0,-10 BOLD
聽 聽 聽
聽 聽use clientes
聽 聽index on &cKey to clientes

聽 聽nTot := 0
聽 聽while !clientes->( Eof( ) )
聽 聽 聽 nTot +) clientes->Edad
聽 聽 聽 clientes->( DbSkip() )
聽 聽End
聽 聽Clientes->( DbGotop() )


Luego en la definicion del footer:

Code (fw): Select all Collapse
oLbx:aFooters:={ "Total:", " ", Transform( ntot, "999,999") }


Y listo, ya no tienes que llamar a otra funcion adicional, a menos que agregues otro registro, tendras que volver a sumar las edades, volver a definir el footer, y hacerle un refresh al objeto del Browse.

Espero me entiendas.

Carlos Sincuir
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Totalizar columna en el footer en wbrowse de HDC
Posted: Wed Nov 18, 2009 05:12 PM
csincuir wrote:Jose,
Por contestar r谩pido, no vi bien tu codigo.

Creo que lo que tienes que hacer es lo siguiente:

Sumar primero el total de edades:
Code (fw): Select all Collapse
function Main()

聽 聽local oWnd, oLbx
聽 聽local cKey:= "Upper(Nombre)", oItem
聽 聽local cDefaultMsg:= "(C) 1994-2002, CeSoTech PC Solutions"
聽 聽local oFont, oSay
聽 聽local nTot // <---- Agregado 

聽 聽SET DEFAULT TO ".\data"
聽 聽REQUEST DBFCDX
聽 聽RddSetDefault("dbfcdx")
聽 聽 聽
聽 聽DEFINE FONT oFont NAME GetSysFont() SIZE 0,-10 BOLD
聽 聽 聽
聽 聽use clientes
聽 聽index on &cKey to clientes

聽 聽nTot := 0
聽 聽while !clientes->( Eof( ) )
聽 聽 聽 nTot +) clientes->Edad
聽 聽 聽 clientes->( DbSkip() )
聽 聽End
聽 聽Clientes->( DbGotop() )


Luego en la definicion del footer:

Code (fw): Select all Collapse
oLbx:aFooters:={ "Total:", " ", Transform( ntot, "999,999") }


Y listo, ya no tienes que llamar a otra funcion adicional, a menos que agregues otro registro, tendras que volver a sumar las edades, volver a definir el footer, y hacerle un refresh al objeto del Browse.

Espero me entiendas.

Carlos Sincuir



Carlos, Muchas gracias!!!!!, particularmente gracias por contestar tan rapido, lo pruebo y luego te informo. :-)
Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Totalizar columna en el footer en wbrowse de HDC
Posted: Wed Nov 18, 2009 06:29 PM

Carlos,

Gracias por tu tiempo y voluntad de ayudar.

Qued贸 super bien!!!

Gracias. :D

Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 593
Joined: Sat May 12, 2007 11:47 AM
Re: Totalizar columna en el footer en wbrowse de HDC
Posted: Thu Nov 19, 2009 12:14 PM
Hola Jos茅,

S贸lo para recordarte que si al totalizar en un footer necesitas que quede una sola columna, puedes hacerlo con la peque帽a modificaci贸n que le efectu茅 a la WBROWSE de HC.

http://forums.fivetechsupport.com/viewtopic.php?f=6&t=14117&hilit=footer+twbrowse#p72713

Saludos.

Rolando :-)

Continue the discussion