xBrowse - Footer (SOLUCIONADO)

xBrowse - Footer (SOLUCIONADO)

Postby MarioG » Tue Dec 03, 2013 3:48 am

Estimados;
Tengo el siguiente footer:
Image

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
Last edited by MarioG on Wed Dec 04, 2013 9:19 pm, edited 1 time in total.
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Footer

Postby cuatecatl82 » Tue Dec 03, 2013 4: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
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: xBrowse - Footer

Postby MarioG » 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: Select all  Expand view  RUN
: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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Footer

Postby joseluisysturiz » Tue Dec 03, 2013 8: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: Select all  Expand view  RUN
: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... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: xBrowse - Footer

Postby MarioG » Tue Dec 03, 2013 8: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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Footer

Postby cnavarro » Tue Dec 03, 2013 9: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
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: xBrowse - Footer

Postby joseluisysturiz » Tue Dec 03, 2013 9: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:Monto: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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: xBrowse - Footer

Postby MarioG » Tue Dec 03, 2013 9: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: Select all  Expand view  RUN
  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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Footer

Postby MarioG » 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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Footer

Postby joseluisysturiz » 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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: xBrowse - Footer

Postby MarioG » Tue Dec 03, 2013 11:07 pm

Pues mi máquina no sabe multiplicar :D
Lo haga asi:
Code: Select all  Expand view  RUN
     :bChange  := {|| ::oLstDeuda:MakeTotals(), ;
                       ::oLstDeuda:Monto:cFooter:= Trans( -::oLstDeuda:Monto:nTotal, "@E( 99,999.99" ), ::oLstDeuda:Refresh()  }
 

o así:
Code: Select all  Expand view  RUN
     :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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Footer

Postby FranciscoA » Tue Dec 03, 2013 11:12 pm

Mario, intenta asi:
Code: Select all  Expand view  RUN
    :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
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: xBrowse - Footer

Postby MarioG » 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: Select all  Expand view  RUN
: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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Footer

Postby joseluisysturiz » Wed Dec 04, 2013 2: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:Monto:nTotal), "@E( 99,999.99" )
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: xBrowse - Footer

Postby carlos vargas » Wed Dec 04, 2013 4: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: Select all  Expand view  RUN

   WITH OBJECT oBrw
      :aCols[ 03 ]:cFooter     := "Total C$:"
      :aCols[ 06 ]:cFooterPicture := "(999,999.99)" //ejemplo
      :aCols[ 06 ]:nFooterType := AGGR_SUM
  END
 

Code: Select all  Expand view  RUN

   EXTEND CLASS TXBRWCOLUMN WITH DATA   cFooterPicture
   OVERRIDE METHOD FooterStr  IN CLASS TXBRWCOLUMN WITH KFooterStr
 

Code: Select all  Expand view  RUN

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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 19 guests