Footer xBrowse

Footer xBrowse

Postby Francisco Horta » Tue Jan 21, 2014 4:15 pm

Hola foro,

Quiero usar AGGR_COUNT para totalizar conteo en el footer de un xbrowse conforme al valor en mi arreglo, pero no doy como totalizar,
agrego una imagen de como quiero que quede, necesito contar unicamente las celdas con valor 1,2 y 4 y poder mostrar en el footer,
agrego una imagen de como quiero que sea,

http://www.subirimagenes.net/i/140121051741111303.jpg

Image
gracias
saludos
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Footer xBrowse

Postby El Loco » Tue Jan 21, 2014 4:32 pm

Paco en la versión de septiembre viewtopic.php?f=16&t=22483&p=119856&hilit=bSumCondition#p119856 se agrego una nueva data "bSumCondition", me parece que por ahi van los tiros.
Trate de hacerlo funcionar pero me tira error.
Esto es lo que tengo hasta ahora:
Code: Select all  Expand view  RUN

#include "FiveWin.ch"
#include "xbrowse.ch"

function main()

   local oDlg, oBrw, oFont, oBold
   local aDato := {}
   local aHead := {"" ,"Dia 1","Dia 2","Dia 3","Dia 4","Dia 5","Dia 6","Dia 7" }

   aDato:= { { "algo 1", 0 , 2 , 1 , 2 , 0 , 2 , 2 },;
             { "algo 2", 0 , 1 , 4 , 1 , 1 , 0 , 2 },;
             { "algo 3", 1 , 0 , 0 , 3 , 1 , 4 , 1 },;
             { "algo 4", 2 , 0 , 2 , 0 , 3 , 0 , 3 },;
             { "algo 5", 1 , 2 , 1 , 2 , 0 , 1 , 0 },;
             { "algo 6", 0 , 1 , 0 , 0 , 0 , 0 , 0 },;
             { "algo 7", 0 , 0 , 0 , 0 , 0 , 0 , 4 } }
             
   DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
   DEFINE FONT oBold NAME 'TAHOMA' SIZE 0,-12 BOLD
   
   DEFINE DIALOG oDlg SIZE 400,300 PIXEL FONT oFont ;
      TITLE 'Demo para Paco'

   @ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
      AUTOCOLS ;
      HEADERS " " , "Dia 1","Dia 2","Dia 3","Dia 4","Dia 5","Dia 6","Dia 7" ;
      ARRAY aDato CELL LINES NOBORDER FASTEDIT FOOTERS

   oBrw:SetArray(aDato)
   
   AEval( oBrw:aCols, { |o| o:cEditPicture := '99', ;
                            o:nFooterType := AGGR_COUNT ,;
                            o:bSumCondition := {|| If(aDato[oBrw:aCols] == 1 .or. aDato[oBrw:aCols] == 2 .or. aDato[oBrw:aCols] == 4 , (oBrw:MakeTotals(),oBrw:RefreshFooters()) , ) } }, 2 )

   oBrw:MakeTotals()
   oBrw:CreateFromCode()
   
   ACTIVATE DIALOG oDlg CENTERED

return nil

 

Algo estoy haciendo mal pero todavía no lo registro.
Sigo intentando.

Abrazo.
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Footer xBrowse

Postby cnavarro » Tue Jan 21, 2014 9:24 pm

Code: Select all  Expand view  RUN

o:bSumCondition := {|| If(aDato[oBrw:aCols] == 1 .or. aDato[oBrw:aCols] == 2 .or. aDato[oBrw:aCols] == 4
 

Creo que oBrw:aCols -> devuelve un tipo Array. No se si es correcto utilizarlo como indice de una tabla -> aDato[oBrw:aCols]
A primera vista es lo que me ha parecido
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Footer xBrowse

Postby Francisco Horta » Tue Jan 21, 2014 9:35 pm

Miguel,

Este sistema es un poco viejo y lo compilo con 11.08, voy a actualizarlo para probar con una version mas nueva, pero por lo pronto, seguire haciendo otras pruebas.
Lo mas facil es crear un segundo arreglo con la condicion del primer arreglo y ponerlo en el cFooter, pero el caso es que utilizo un timer y cada minuto actualizo el array con los valors y estos pueden estar cambiando, ypense que seria menos codigo y mas rapido evaluar cada columna y que totalizara el xbrowse directamente sin tener que hacer yo la actualizacion del segundo arreglo y volver a cargar.
Seguire dandole.
Gracias Carlos y Miguel
Saludos
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Footer xBrowse

Postby El Loco » Tue Jan 21, 2014 9:43 pm

Si es verdad Cristobal, pero publique la ultima de las mil pruebas que hice.
Probé
Code: Select all  Expand view  RUN
o:bSumCondition := {|| If(aDato[oBrw:nArrayAt] == 1 .or. aDato[oBrw:nArrayAt] == 2 .or. aDato[oBrw:nArrayAt] == 4
 


y tampoco.
Para colmo no existe ningún ejemplo ni en el foro ni en Samples de Fivewin.
Igual sigo insistiendo, tiene que funcionar de alguna manera.

Gracias.
Abrazo.,
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Footer xBrowse

Postby cnavarro » Tue Jan 21, 2014 10:02 pm

El Loco wrote:Si es verdad Cristobal, pero publique la ultima de las mil pruebas que hice.
Probé
Code: Select all  Expand view  RUN
o:bSumCondition := {|| If(aDato[oBrw:nArrayAt] == 1 .or. aDato[oBrw:nArrayAt] == 2 .or. aDato[oBrw:nArrayAt] == 4
 


y tampoco.
Para colmo no existe ningún ejemplo ni en el foro ni en Samples de Fivewin.
Igual sigo insistiendo, tiene que funcionar de alguna manera.

Gracias.
Abrazo.,
Miguel


Miguel
Creo que un problema lo puedes tener en
Code: Select all  Expand view  RUN

aDato[oBrw:nArrayAt] ==   .../...
 

Creo que es un array de dos dimensiones y solo hacer referencia al registro (posicion de aDatos) que es otro array
Deberia ser, quizas, algo asi
Code: Select all  Expand view  RUN

aDato[oBrw:nArrayAt][3] = ../...
 

Por ejemplo para referirnos a la posicion 3 del array, ¿que opinas?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Footer xBrowse

Postby Francisco Horta » Tue Jan 21, 2014 10:41 pm

Cristobal,

creo que por ahi van los tiros, es un arreglo multi y habira que calcular con el narratat la posicion de cada row del arreglo
algo asi como : oBrw[nArrayAt,nCol] == 1 ....
Saludos
p.d. y perdon por lo de carlos, eres cristobal. se me chispotio.. jiji
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Footer xBrowse

Postby El Loco » Tue Jan 21, 2014 11:29 pm

Tenes razón Cristobal, que gil que soy.
Igualmente hay algo más que no engancho.

Sigo transpirando :oops:
Abrazos
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Footer xBrowse

Postby cnavarro » Wed Jan 22, 2014 1:38 am

Miguel, hay que tener en cuenta que al evaluar el codeblock, el primer parámetro es el valor y el segundo la columna
DATA bSumCondition // Maketotals aggregates if this condition is true, if codeblock is specified
// evaluated with uValue, oCol as parameters

quizás algo asi funcione (no lo he probado)
Code: Select all  Expand view  RUN

o:bSumCondition := {|uVal, oCol| If( uVal == 1 .or. uVal == 2 .or. uVal == 4    .../...
 

Es una idea, a ver si te puede servir
Last edited by cnavarro on Wed Jan 22, 2014 1:45 am, edited 1 time in total.
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Footer xBrowse

Postby cnavarro » Wed Jan 22, 2014 1:43 am

Francisco Horta wrote:Cristobal,

creo que por ahi van los tiros, es un arreglo multi y habira que calcular con el narratat la posicion de cada row del arreglo
algo asi como : oBrw[nArrayAt,nCol] == 1 ....
Saludos
p.d. y perdon por lo de carlos, eres cristobal. se me chispotio.. jiji


Francisco
No se si te he entendido bien, pero creo que no hace falta lo que comentas ya que el codeblock es una DATA de :aCols[ n ] en el que se desea obtener el total por lo que al evaluar el codeblock ya pasa la el objeto columna como 2 parametro y el valor de la posicion en el que se encuentra al recorrer el browse como 1 parametro.
Espero haberme explicado
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Footer xBrowse

Postby El Loco » Wed Jan 22, 2014 5:14 am

cnavarro wrote:Miguel, hay que tener en cuenta que al evaluar el codeblock, el primer parámetro es el valor y el segundo la columna
DATA bSumCondition // Maketotals aggregates if this condition is true, if codeblock is specified
// evaluated with uValue, oCol as parameters

quizás algo asi funcione (no lo he probado)
Code: Select all  Expand view  RUN

o:bSumCondition := {|uVal, oCol| If( uVal == 1 .or. uVal == 2 .or. uVal == 4    .../...
 

Es una idea, a ver si te puede servir


Troesma Cristobal, funciona perfecto !!!
Si bien no era para mi sino para ayudar a Paco, me viene bien porque aprendi algo más. Gracias

Adjunto el ejemplo funcionando:

Code: Select all  Expand view  RUN

#include "FiveWin.ch"
#include "xbrowse.ch"

function main()

   local oDlg, oBrw, oFont, oBold
   local aDato := {}
   local aHead := {"" ,"Dia 1","Dia 2","Dia 3","Dia 4","Dia 5","Dia 6","Dia 7" }

   aDato:= { { "algo 1", 0 , 2 , 1 , 2 , 0 , 2 , 2 },;
             { "algo 2", 0 , 1 , 4 , 1 , 1 , 0 , 2 },;
             { "algo 3", 1 , 0 , 0 , 3 , 1 , 4 , 1 },;
             { "algo 4", 2 , 0 , 2 , 0 , 3 , 0 , 3 },;
             { "algo 5", 1 , 2 , 1 , 2 , 0 , 1 , 0 },;
             { "algo 6", 0 , 1 , 0 , 0 , 0 , 0 , 0 },;
             { "algo 7", 0 , 0 , 0 , 0 , 0 , 0 , 4 } }
             
   DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
   DEFINE FONT oBold NAME 'TAHOMA' SIZE 0,-12 BOLD
   
   DEFINE DIALOG oDlg SIZE 400,300 PIXEL FONT oFont ;
      TITLE 'Demo para Paco'

   @ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
      AUTOCOLS ;
      HEADERS " " , "Dia 1","Dia 2","Dia 3","Dia 4","Dia 5","Dia 6","Dia 7" ;
      ARRAY aDato CELL LINES NOBORDER FASTEDIT FOOTERS

   oBrw:SetArray(aDato)

   AEval( oBrw:aCols, { |o| o:cEditPicture := '99', ;
                            o:nFooterType := AGGR_COUNT ,; //AGGR_SUM  ,;
                            o:bSumCondition := {|uVal, oCol| If( uVal == 1 .or. uVal == 2 .or. uVal == 4 , .t. , .f. ) } }, 2 )

   oBrw:MakeTotals()
   oBrw:CreateFromCode()
   
   ACTIVATE DIALOG oDlg CENTERED //On Init gBrowse(oBrw:aArrayData)

return nil

 


Un gran abrazo.
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Footer xBrowse (solucionado)

Postby Francisco Horta » Wed Jan 22, 2014 7:19 pm

Miguel y Cristobal,

Gracias por su ayuda.
:)
Saludos
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: D.Fernandez, Google [Bot] and 20 guests