FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour XBrowse, columna valor calculado
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
XBrowse, columna valor calculado
Posted: Tue May 14, 2024 09:53 PM

Hola a todos,

Cómo harían Ustedes para tener un XBrowse en el cual una de las columnas es un valor calculado cuyo valor es el de un campo del registro visualizado ( da igual si es el orden natural de la DBF o no ), más el valor del campo calculado del registro anterior?

Por ejemplo un extracto de una cuenta bancaria. En donde habrá una columna saldo que es el resultado de sumar/restar de la columna saldo del registro anterior, más/menos el valor del campo importe del registro actual.

No doy con ello.

Muchas gracias,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 514
Joined: Sun Oct 16, 2005 03:32 AM
Re: XBrowse, columna valor calculado
Posted: Wed May 15, 2024 09:11 PM
Carlos,

Un primer intento:
Code (fw): Select all Collapse
#include "fivewin.ch"
#include "xBrowse.ch"


Function Main()
   LOCAL oDlg, oBrw
   LOCAL aCampos := {{"INGRESO","N",10,0},{"EGRESO","N",10,0},{"SALDO","N",10,0}}
   LOCAL aData := { {1000,    0, 0},;
                    {5000,    0, 0} ,;
                    {5000,    0, 0} ,;
                    {5000,    0, 0} ,;
                    {   0, 2000, 0} ,;
                    {4000,    0, 0} ,;
                    {   0, 3000, 0} }
   LOCAL oData := TArrayData():New(aData,aCampos)
   
   DEFINE DIALOG oDlg SIZE 300,300 PIXEL TRUEPIXEL

       @ 10,10 XBROWSE oBrw OF oDlg DATASOURCE oData AUTOCOLS LINES CELL PIXEL SIZE -10,-10
   
       WITH OBJECT oBrw
   
           :oCol("Saldo"):bEditValue := {|| oBrw:oDbf:aData[oBrw:oDbf:BookMark,3] := iif(oBrw:oDbf:BookMark==1,;
                                            oData:Ingreso - oData:Egreso,;
                                            oBrw:oDbf:aData[oBrw:oDbf:BookMark-1,3] + oData:Ingreso - oData:Egreso ) }
   
           :lFooter := .T.
           :oCol("Ingreso"):nFooterType := AGGR_SUM
           :oCol("Egreso"):nFooterType  := AGGR_SUM
           :oCol("Saldo"):bFooter       := { || oBrw:oCol("Ingreso"):nTotal - oBrw:oCol("Egreso"):nTotal }
   
           :MakeTotals()
   
             :nStretchCol      := STRETCHCOL_LAST
     
           :CreateFromCode()
    
       END
   
   ACTIVATE DIALOG oDlg CENTERED
Return NIL

Saludos,



Carlos Gallego



*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: XBrowse, columna valor calculado
Posted: Fri May 17, 2024 05:06 PM
Este codigo tambien te puede ser util.
Code (fw): Select all Collapse
//------------------------------------
Function Salda()
   local nSaldo:=0, cAlias:=Alias()

   (cAlias)->(dbgotop())
   (cAlias)->(dbEval( {|| nSaldo += ( (cAlias)->debe - (cAlias)->haber ) ,  (cAlias)->Saldo := nSaldo } ))
   SysRefresh()
   XBROWSER (cAlias) TITLE "EJEMPLO PARA ESTADO DE CUENTA"
return nil
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: XBrowse, columna valor calculado
Posted: Fri May 17, 2024 07:16 PM

Hola,

De momento he optado que el registro del apunte (un asiento tiene varios apuntes), arrastre el saldo resultante de la cuenta de ese apunte, y en el proceso de recalculo (por si acaso no se informa de manera cronológicamente ordenada) se recalcula este saldo. Sólo me servirá para una lista ordenada cronológicamente, lo sé.

Gracias a los dos, ahora estoy peleándome con Outlook, cuando resuelva vuelvo a por este asunto.

Muchas gracias,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Continue the discussion