Totalizar columnas en footer de TXBrowse

Totalizar columnas en footer de TXBrowse

Postby triumvirato » Sun Nov 22, 2009 10:18 am

Buenas compañeros!

Estoy comenzando a utilizar la TXBrowse. Dada su versatilidad, una de las cosas por las que quiero usarla son los pies de columna, en los que quiero poner unos totales. He revisado algunos ejemplos en \Samples pero son demasiado complejos aún para mí. He definido un TXBrowse donde muestro algunos campos de una base de datos:
Code: Select all  Expand view
 REDEFINE XBrowse oBrwRec ;
           FIELDS DToC( Tem1->Rec_Fec ), Tem1->Rec_Num, Tem1->Rec_Nal, Tem1->Rec_Des, Str( Tem1->Rec_Pen ), Str( Tem1->Rec_Imp ), Str( Tem1->Rec_Par );
           HEADERS "Fecha", "NºRecibo", "Almacén", "Tipo", "Pendiente", "Imp.Ini.", "Imp.Pag";
           ID 1000 OF oDlg ;
           UPDATE
 


Lo que me gustaría es saber cómo se totalizarían en los footers los campos numéricos. Si alguien tiene un ejemplo sencillo de esto, se lo agradeceré.

Saludos!!!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Totalizar columnas en footer de TXBrowse

Postby nageswaragunupudi » Sun Nov 22, 2009 6:34 pm

Above code is better written as
Code: Select all  Expand view
REDEFINE XBROWSE oBrwRec ID 1000 OF oDlg ;
   COLUMNS 'REC_FEC', 'REC_NUM', 'REC_NAL', 'REC_DES', 'REC_PEN', ;
           'REC_IMP', 'REC_PAR' ;
   HEADERS "FECHA", "NºRECIBO", "ALMACÉN", "TIPO", "PENDIENTE", "IMP.INI.", "IMP.PAG";
   ALIAS 'TEM1' ;
   CELL LINES FOOTERS UPDATE

// It is not necessary to convert the fields in to Character values
// Better we do not convert. If we do not convert, XBrowse knows the correct
// Data type.
// xBrowse automatically formats and displays depending on the data type
// and DBStruct info of the alias

// Assuming we want totals of two columns REC_IMP and REC_PAR

   WITH OBJECT oBrwRec:oCol( 'IMP.INI' )
      :lTotal  := .t.
      :nTotal  := 0
   END  

   WITH OBJECT oBrwRec:oCol( 'IMP.PAG' )
      :lTotal  := .t.
      :nTotal  := 0
   END  

   oBrwRec:MakeTotals()       // xBrowse calculates the totals
   
   oBrwRec:CreateFromCode()
   
   ACTIVATE DIALOG oDlg CENTERED
 


Para xbrowse, debemos utilizar los valores del campo, sin
como la conversión de los valores de carácter. Entonces Xbrowse sabe sus valores y formatos de ellos adecuadamente. Xbrowse también puede convierte automáticamente los totales
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10620
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Totalizar columnas en footer de TXBrowse

Postby triumvirato » Mon Nov 23, 2009 7:31 am

nageswaragunupudi,

Thank you very much for your example and speed. I'm very impressed with the help offered by the fellows of this forum. The example is simple enough and seems to be what I'm looking for, but I get a runtime error:
Error description: Error BASE/1005 Class: 'NIL' has no property: LTOTAL
It happens in the line:
Code: Select all  Expand view
  WITH OBJECT oBrwRec:oCol( 'IMP.INI' )
      :lTotal  := .t.
      :nTotal  := 0
   END  
 

I repeat, thank you very much for the example.

Best Regards!

nageswaragunupudi,

Muchas gracias por tu ejemplo y rapidez. Estoy muy impresionado con la ayuda que brindan los compañeros del foro. El ejemplo es bastante sencillo y parece ser lo que busco, pero obtengo un error en tiempo de ejecución:
Error description: Error BASE/1005 Class: 'NIL' has no property: LTOTAL
Esto sucede en la línea:
Code: Select all  Expand view
  WITH OBJECT oBrwRec:oCol( 'IMP.INI' )
      :lTotal  := .t.
      :nTotal  := 0
   END  
 

Repito: muchas gracias por el ejemplo.

Saludos!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Totalizar columnas en footer de TXBrowse

Postby wmormar » Mon Nov 23, 2009 7:57 am

triumvirato,

Al parecer la columna que mencionas no está definida, el Header no existe, esa es la razón por la cual te envía error.
William, Morales
Saludos

méxico.sureste
User avatar
wmormar
 
Posts: 1074
Joined: Fri Oct 07, 2005 10:41 pm
Location: México

Re: Totalizar columnas en footer de TXBrowse

Postby triumvirato » Mon Nov 23, 2009 8:12 am

William,

Gracias por tu ayuda. Pues la definición de la columna entiendo que se hace en el REDEFINE, tal como me ha indicado el compañero nageswaragunupudi:

Code: Select all  Expand view
REDEFINE XBROWSE oBrwRec ID 1000 OF oDlg ;
   COLUMNS 'REC_FEC', 'REC_NUM', 'REC_NAL', 'REC_DES', 'REC_PEN', ;
           'REC_IMP', 'REC_PAR' ;
   HEADERS "FECHA", "NºRECIBO", "ALMACÉN", "TIPO", "PENDIENTE", "IMP.INI.", "IMP.PAG";
   ALIAS 'TEM1' ;
   CELL LINES FOOTERS UPDATE
 


No obstante, por si hubiese algún tipo de incompatibilidad en nombres, he cambiado los HEADERS por:
Code: Select all  Expand view
  HEADERS "FECHA", "NºRECIBO", "ALMACÉN", "TIPO", "PENDIENTE", "IMP1", "IMP2";
 


Después de los cambios, tengo entonces el siguiente código:
Code: Select all  Expand view
 SELECT 200
  GO TOP

  DEFINE DIALOG oDlg RESOURCE "Dlg_Prueba"

  REDEFINE XBROWSE oBrwRec ID 1000 OF oDlg ;
   COLUMNS 'REC_FEC', 'REC_NUM', 'REC_NAL', 'REC_DES', 'REC_PEN', ;
           'REC_IMP', 'REC_PAR' ;
   HEADERS "FECHA", "NºRECIBO", "ALMACÉN", "TIPO", "PENDIENTE", "IMP1", "IMP2";
   ALIAS 'TEM1' ;
   CELL LINES FOOTERS UPDATE

   WITH OBJECT oBrwRec:oCol( 'Imp1' )
      :lTotal  := .t.
      :nTotal  := 0
   END  

   WITH OBJECT oBrwRec:oCol( 'Imp2' )
      :lTotal  := .t.
      :nTotal  := 0
   END  

   oBrwRec:MakeTotals()       // xBrowse calculates the totals

   oBrwRec:CreateFromCode()
     
  ACTIVATE DIALOG oDlg CENTERED


El error que comentaba antes desaparece, pero ahora me arroja este nuevo error:

Error description: Error BASE/1004 Message not found: TXBROWSE:MAKETOTALS

Stack Calls
===========
Called from: .\source\function\HARBOUR.PRG => _CLSSETERROR(0)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:MAKETOTALS(0)
Called from: C:\Users\David\DOCUME~2\MISPRO~1\Gesco\PROC_1.PRG => CONREC(817)


Alguna sugerencia???


MUCHAS GRACIAS!!!!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Totalizar columnas en footer de TXBrowse

Postby nageswaragunupudi » Mon Nov 23, 2009 11:21 am

MakeTotals() was introduced in version FWH 9.03

Earlier versions we should calculate the totals ourselves.
From version 8.06 to 9.02, we calculate the total and assign it to oBrw:nTotal.

Versions upto 8.05, we should calculate the total ourselves and assign it as codeblock oBrw:bFooter := { || ntotal }
Last edited by nageswaragunupudi on Mon Nov 23, 2009 11:36 am, edited 1 time in total.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10620
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Totalizar columnas en footer de TXBrowse

Postby nageswaragunupudi » Mon Nov 23, 2009 11:27 am

triumvirato wrote:nageswaragunupudi,

Error description: Error BASE/1005 Class: 'NIL' has no property: LTOTAL
It happens in the line:
Code: Select all  Expand view
  WITH OBJECT oBrwRec:oCol( 'IMP.INI' )
      :lTotal  := .t.
      :nTotal  := 0
   END  
 

I repeat, thank you very much for the example.


Regret my spelling mistake. Header name is 'IMP.INI.' not 'IMP.INI'.
Please use oBrwRec:oCol( 'IMP.INI.' ). The argument should be the exact name of header.
Or you may use oBrwRec:aCols[ 6 ].
With this correction, the code will work.

If I know your FWH version, I can suggest correct syntax for your version

<SPANISH TRANSLATION>
Lamento mi error de ortografía. Nombre de encabezado es "IMP.INI."
no 'IMP.INI.
Por favor, use oBrwRec: Ocol ( 'IMP.INI.'). El argumento
debe ser el nombre exacto de cabecera.
O puede utilizar oBrwRec: aCols [6].
Con esta corrección, el código de trabajo.

Si conozco la versión de FWH, puedo sugerir correcta
la sintaxis para su versión
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10620
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Totalizar columnas en footer de TXBrowse

Postby triumvirato » Mon Nov 23, 2009 12:20 pm

nageswaragunupudi,

Thank you very much again for your help.
That little error you mentioned, has been solved changing correctly the HEADERS, the fact remains that commented on a previous post:
Error description: Error Message BASE/1004 not found: TXBROWSE: MAKETOTALS

Stack Calls
===========
Called from:. \ Source \ function \ HARBOUR.PRG => _CLSSETERROR (0)
Called from:. \ Source \ classes \ XBROWSE.PRG => TXBROWSE: MAKETOTALS (0)
Called from: C: \ Users \ David \ PROGRA ~ 2 \ MISPRO ~ 1 \ Gesco \ PROC_1.PRG => CONREC (817)

So i think that the problem is with my version of FWH, that is October 2008.

Best Regards!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Totalizar columnas en footer de TXBrowse

Postby nageswaragunupudi » Mon Nov 23, 2009 3:35 pm

for 8.10 fwh:

MakeTotals() does not work.

You should calculate the totals in advance.
Code: Select all  Expand view
WITH OBJECT oBrwRec:oCol( 'IMP.INI' )
      :lTotal  := .t.
      :nTotal  := <your total>
END  


Footers will show this total.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10620
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Totalizar columnas en footer de TXBrowse

Postby triumvirato » Mon Nov 23, 2009 4:24 pm

nageswaragunupudi wrote:for 8.10 fwh:

MakeTotals() does not work.

You should calculate the totals in advance.
Code: Select all  Expand view
WITH OBJECT oBrwRec:oCol( 'IMP.INI' )
      :lTotal  := .t.
      :nTotal  := <your total>
END  


Footers will show this total.


nageswaragunupudi,

Thanks for your help, i supposed that METHOD would not be available in my version. I'll see how to do the calculation with an example.
Thanks again!

Best regards.
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Totalizar columnas en footer de TXBrowse

Postby triumvirato » Mon Nov 23, 2009 4:33 pm

Bueno, pues después de hacer correcciones, tengo el siguiente código:

Code: Select all  Expand view
 DEFINE DIALOG oDlg RESOURCE "Dlg_Prueba"
 
  REDEFINE XBROWSE oBrwRec ID 1000 OF oDlg ;
     COLUMNS 'Rec_Fec', 'Rec_Num', 'Rec_Nal', 'Rec_Des', 'Rec_Pen', ;
             'Rec_Imp', 'Rec_Par' ;
     HEADERS "FECHA", "NºRECIBO", "ALMACÉN", "TIPO", "PENDIENTE", "IMP.INI.", "IMP.PAG.";
     ALIAS 'TEM1' ;
     CELL LINES FOOTERS UPDATE

   WITH OBJECT oBrwRec:oCol( 'IMP.INI.' )
      :lTotal  := .t.
      :nTotal  := 0
   END  

   WITH OBJECT oBrwRec:oCol( 'IMP.PAG.' )
      :lTotal  := .t.
      :nTotal  := 0
   END  
 
   oBrwRec:CreateFromCode()
     
  ACTIVATE DIALOG oDlg CENTERED


Y al ejecutarlo, me presenta el siguiente error:

Error description: Error FiveWin/2 Duplicated Id: No: 107

Stack Calls
===========
Called from: .\source\classes\DIALOG.PRG => TDIALOG:DEFCONTROL(0)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:CREATEFROMCODE(0)
Called from: C:\Users\David\DOCUME~2\MISPRO~1\Gesco\PROC_1.PRG => CONREC(796) -------> oBrwRec:CreateFromCode()

Creo que la Xbrowse se me está resistiendo en demasía... si alguien me puede ayudar con este nuevo error antes de que desista en su uso... Si suprimo dicha línea, funciona perfectamente. Entonces ese método no está disponible en la version de octubre 2008 tampoco?

Saludos!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Totalizar columnas en footer de TXBrowse

Postby FranciscoA » Mon Nov 23, 2009 5:15 pm

triumvirato wrote:Bueno, pues después de hacer correcciones, tengo el siguiente código:

Code: Select all  Expand view
 DEFINE DIALOG oDlg RESOURCE "Dlg_Prueba"
 
  REDEFINE XBROWSE oBrwRec ID 1000 OF oDlg ;
     COLUMNS 'Rec_Fec', 'Rec_Num', 'Rec_Nal', 'Rec_Des', 'Rec_Pen', ;
             'Rec_Imp', 'Rec_Par' ;
     HEADERS "FECHA", "NºRECIBO", "ALMACÉN", "TIPO", "PENDIENTE", "IMP.INI.", "IMP.PAG.";
     ALIAS 'TEM1' ;
     CELL LINES FOOTERS UPDATE

   WITH OBJECT oBrwRec:oCol( 'IMP.INI.' )
      :lTotal  := .t.
      :nTotal  := 0
   END  

   WITH OBJECT oBrwRec:oCol( 'IMP.PAG.' )
      :lTotal  := .t.
      :nTotal  := 0
   END  
 
   oBrwRec:CreateFromCode()
     
  ACTIVATE DIALOG oDlg CENTERED


Y al ejecutarlo, me presenta el siguiente error:

Error description: Error FiveWin/2 Duplicated Id: No: 107

Stack Calls
===========
Called from: .\source\classes\DIALOG.PRG => TDIALOG:DEFCONTROL(0)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:CREATEFROMCODE(0)
Called from: C:\Users\David\DOCUME~2\MISPRO~1\Gesco\PROC_1.PRG => CONREC(796) -------> oBrwRec:CreateFromCode()

Creo que la Xbrowse se me está resistiendo en demasía... si alguien me puede ayudar con este nuevo error antes de que desista en su uso... Si suprimo dicha línea, funciona perfectamente. Entonces ese método no está disponible en la version de octubre 2008 tampoco?

Saludos!


Hola, triumvirato.
Según veo (dijo el ciego), estás utilizando recursos, por lo tanto, creo que debes usar:

oBrwRec:CreateFromResource(nNum_ID)
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Totalizar columnas en footer de TXBrowse

Postby triumvirato » Mon Nov 23, 2009 10:01 pm

FranciscoA wrote:Hola, triumvirato.
Según veo (dijo el ciego), estás utilizando recursos, por lo tanto, creo que debes usar:

oBrwRec:CreateFromResource(nNum_ID)
Saludos.


Francisco,

Muchas gracias por tu ayuda. Efectivamente funciona perfectamente con CreateFromRedource( nNum_ID ). Y también sin ella :roll: , lo cual me lleva a pensar que no hace falta ninguna cláusula cuando se REDEFINE desde recursos.
Muchas gracias por tu ayuda Francisco.

Saludos!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Totalizar columnas en footer de TXBrowse

Postby nageswaragunupudi » Tue Nov 24, 2009 1:30 am

Please remove this line
oBrwRec:CreateFromCode()
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10620
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Totalizar columnas en footer de TXBrowse

Postby triumvirato » Tue Nov 24, 2009 7:06 am

nageswaragunupudi wrote:Please remove this line
oBrwRec:CreateFromCode()


nageswaragunupudi,

Thanks a lot for your help. That line is removed yet. Thanks.

Regards!!!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 50 guests