FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse - Footer (SOLUCIONADO)
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
xBrowse - Footer (SOLUCIONADO)
Posted: Tue Dec 03, 2013 03:48 AM
Estimados;
Tengo el siguiente footer:


El problema es el siguiente: La columna Monto (en rojo) tiene valores positivos en la BD.
Lo que necesito es mostrarla en negativo y usando el picture "@( 99,999.99"
Alguna pista?

gracias
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 04:23 AM

Va algo al vuelo: Si solo necsitas que el valor representado sea negativo multiplica (nValor * -1) para mostrarlo en negativo en el folder..

Si necesitas algo más elaborado comentanos y te apoyaremos..

Saludos.

Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 10:47 AM
Victor; gracias pr responder
No escribí bien la pregunta
El valor, que llamas nValor, sería el resultado :MakeTotals().
Yo probé, sobre la columna en custión, haciendo:
Code (fw): Select all Collapse
:bFooter:= {|| Trans( -Val( ::oLstDeuda:Cobrado:cFooter ), "@E( 99,999.99" ) }

y me devuelve 0.
O sea la consulta sería: como obtengo el valor de dicha columna?
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 08:40 PM
MarioG wrote:Victor; gracias pr responder
No escribí bien la pregunta
El valor, que llamas nValor, sería el resultado :MakeTotals().
Yo probé, sobre la columna en custión, haciendo:
Code (fw): Select all Collapse
:bFooter:= {|| Trans( -Val( ::oLstDeuda:Cobrado:cFooter ), "@E( 99,999.99" ) }

y me devuelve 0.
O sea la consulta sería: como obtengo el valor de dicha columna?

Mario, si entiendo bien lo que quieres, nMonto de la columna cuando defines maketotal mantiene ese valor, yo lo uso cuando en una columna hay diferentes valores y quiero que maketotal sea condicionado dependiendo del valor de la celda...nose si es lo que quieres, una imagen habla mas que mil palabras, saludos... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 08:54 PM

José Luis;
lo que quiero es, saber el valor (para el ejemplo 173,81). Como lo obtengo??.

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 09:26 PM

Mario
Creo que para cada objeto columna hay dos datas :nTotal y :nTotalSq, quizás puedas verlo ahí.

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: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 09:53 PM
MarioG wrote:José Luis;
lo que quiero es, saber el valor (para el ejemplo 173,81). Como lo obtengo??.

Yo lo obtengo asi:

oBrw:MakeTotals()
oBrw:Refresh()
nTotalCol := oBrw:nTotal

nTotalCol recibe el valor
oBrw:Monto es la columna donde usas el maketotal,, puede ser el header de la columna o el numero, ejemplo aCol[n]
nTotal contiene el valor resultante de maketotal

espero sea lo que necesitas, saludos...
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 09:57 PM
Cristobal, gracias
Efectivamente :nTotal devuelve el valor.
Pero solo estoy mas cerca... :-)
Hago lo siguiente, y me sigue mostrando el valor como positivo. Supongo que es porque el evento ocurre despues de lo que yo hago
Code (fw): Select all Collapse
   WITH OBJECT ::oLstDeuda
     ...
      :lFooter = TRUE
      :bChange  := {|| ::oLstDeuda:MakeTotals(), ;
                       ::oLstDeuda:Monto:cFooter:= Trans( -::oLstDeuda:Monto:nTotal, "@E( 99,999.99" ), ;
                       ::oLstDeuda:Refresh()  }

      :bGotFocus:= {|| h0["CabVentas"]:SetFocus() }
   END
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 10:00 PM

Jose Luis, gracias
Eso es lo que necesitaba!. Como bien lo apunto tambien Cristobal
Aunque como leerás, aun no tengo lo que quiero...

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 10:07 PM

Si quieres obtener el valor en negativo, solo debes multiplicar el resultado por menos uno (-1), como te dijo el colega al principio, saludos...

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 11:07 PM
Pues mi máquina no sabe multiplicar :-)
Lo haga asi:
Code (fw): Select all Collapse
      :bChange  := {|| ::oLstDeuda:MakeTotals(), ;
                       ::oLstDeuda:Monto:cFooter:= Trans( -::oLstDeuda:Monto:nTotal, "@E( 99,999.99" ), ::oLstDeuda:Refresh()  }

o así:
Code (fw): Select all Collapse
      :bChange  := {|| ::oLstDeuda:MakeTotals(), ;
                       ::oLstDeuda:Monto:cFooter:= Trans( (-1*::oLstDeuda:Monto:nTotal), "@E( 99,999.99" ), ::oLstDeuda:Refresh()  }

y muestra como en la primer imagen que envie
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 11:12 PM
Mario, intenta asi:
Code (fw): Select all Collapse
     :bChange  := {|| ::oLstDeuda:MakeTotals(), ;
                       ::oLstDeuda:Monto:cFooter:= Trans( -::oLstDeuda:Monto:nTotal, "@E( 99,999.99" ), ;
                       ::oLstDeuda:RefreshFooter() }

Saludos.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - Footer
Posted: Tue Dec 03, 2013 11:27 PM
Francisco;
::oLstDeuda:RefreshFooter(), me da error de metodo no valido
pero, asi refresca... aunque el valor lo sigue mostrando como positivo :-)
Code (fw): Select all Collapse
:bChange  := {|| ::oLstDeuda:MakeTotals(), ;
                       ::oLstDeuda:Monto:cFooter:= Trans( -::oLstDeuda:Monto:nTotal, "@E( 99,999.99" ), ;
                       ::oLstDeuda:Monto:RefreshFooter() }


me parece que despues del bChange, hace algo, por eso toma el valor original
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse - Footer
Posted: Wed Dec 04, 2013 02:32 AM
Mario, lo que yo hago no lo hago en la columna, sino afuera en una funcion, en la columna puedes colocar nTotal == tu_function() y en tu_funcion haces el calculo que quieras o coloca el -1 entre parentesis, es decir asi (-1) * tu_valor. En que quieres usar el valor de nTotal, en otra celda o para otra operacion que veo que usas en on change..? saludos...

Prueba asi
Trans( ( (-1) * ::oLstDeuda:nTotal), "@E( 99,999.99" )
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: xBrowse - Footer
Posted: Wed Dec 04, 2013 04:15 AM
extendamos un poco xbrowse agregando una data cFooterPicture a la clase txbrwcolumn
y modifiquemos el metodo FooterStr a la clase txbrwcolumn
y ya tenemos un picture definible para cada footer.
probado con harbour y xharbour

ejemplo de uso
Code (fw): Select all Collapse
   WITH OBJECT oBrw
      :aCols[ 03 ]:cFooter     := "Total C$:"
      :aCols[ 06 ]:cFooterPicture := "(999,999.99)" //ejemplo
      :aCols[ 06 ]:nFooterType := AGGR_SUM
  END

Code (fw): Select all Collapse
   EXTEND CLASS TXBRWCOLUMN WITH DATA   cFooterPicture
   OVERRIDE METHOD FooterStr  IN CLASS TXBRWCOLUMN WITH KFooterStr

Code (fw): Select all Collapse
FUNCTION KFooterStr()
   LOCAL Self    := HB_QSelf()
   local cFooter := "", cType

   if ::bFooter != nil
      cFooter  := Eval( ::bFooter, Self )
      DEFAULT cFooter := ""
   elseif ::nTotal != nil .or. ! Empty( ::nFooterType )
      DEFAULT ::nFooterType := AGGR_SUM, ::nTotal := 0.0
      if ::nFooterType >= AGGR_STD
         if ::nCount > 0
            cFooter  := ::nTotalSq - ( ::nTotal * ::nTotal / ::nCount )
            cFooter  /= ::nCount - If( ::nFooterType == AGGR_STDEVP, 0, 1 )
            cFooter  ^= 0.5
         else
            cFooter  := 0
         endif
      elseif ::nFooterType == AGGR_AVG
         cFooter  := If( ::nCount > 0, ::nTotal / ::nCount, 0 )
      elseif ::nFooterType == AGGR_COUNT
         cFooter  := ::nCount
      else
         cFooter  := ::nTotal
      endif
   elseif ::cFooter != nil
      cFooter  := ::cFooter
   endif

   cType    := ValType( cFooter )
   if cType != 'C'
      if cType == ::cDataType .and. ::cEditPicture != nil
         cFooter  := cValToStr( cFooter, IIf( ::cFooterPicture==NIL, ::cEditPicture, ::cFooterPicture ),, ;
                     IfNil( ::lDisplayZeros, ::oBrw:lDisplayZeros ) )
      else
         cFooter := cValToChar( cFooter )
      endif
   endif

return cFooter
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)