FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Footer xBrowse
Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM

Footer xBrowse

Posted: Tue Jan 21, 2014 04: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


gracias
saludos
____________________

Paco
Posts: 328
Joined: Fri May 19, 2006 04:08 PM

Re: Footer xBrowse

Posted: Tue Jan 21, 2014 04: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 (fw): Select all Collapse
#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
Posts: 6760
Joined: Wed Feb 15, 2012 08:25 PM

Re: Footer xBrowse

Posted: Tue Jan 21, 2014 09:24 PM
Code (fw): Select all Collapse
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]
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
Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM

Re: Footer xBrowse

Posted: Tue Jan 21, 2014 09: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
Posts: 328
Joined: Fri May 19, 2006 04:08 PM

Re: Footer xBrowse

Posted: Tue Jan 21, 2014 09:43 PM
Si es verdad Cristobal, pero publique la ultima de las mil pruebas que hice.
Probé
Code (fw): Select all Collapse
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
Posts: 6760
Joined: Wed Feb 15, 2012 08:25 PM

Re: Footer xBrowse

Posted: 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 (fw): Select all Collapse
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 (fw): Select all Collapse
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 (fw): Select all Collapse
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
Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM

Re: Footer xBrowse

Posted: 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
Posts: 328
Joined: Fri May 19, 2006 04:08 PM

Re: Footer xBrowse

Posted: 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
Posts: 6760
Joined: Wed Feb 15, 2012 08:25 PM

Re: Footer xBrowse

Posted: Wed Jan 22, 2014 01: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 (fw): Select all Collapse
o:bSumCondition := {|uVal, oCol| If( uVal == 1 .or. uVal == 2 .or. uVal == 4    .../...

Es una idea, a ver si te puede servir
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
Posts: 6760
Joined: Wed Feb 15, 2012 08:25 PM

Re: Footer xBrowse

Posted: Wed Jan 22, 2014 01: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
Posts: 328
Joined: Fri May 19, 2006 04:08 PM

Re: Footer xBrowse

Posted: Wed Jan 22, 2014 05: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 (fw): Select all Collapse
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 (fw): Select all Collapse
#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
Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM

Re: Footer xBrowse (solucionado)

Posted: Wed Jan 22, 2014 07:19 PM

Miguel y Cristobal,

Gracias por su ayuda.

Saludos

:)

____________________

Paco

Continue the discussion