XBrowse, columna valor calculado

XBrowse, columna valor calculado

Postby FiveWiDi » Tue May 14, 2024 9: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 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1137
Joined: Mon Oct 10, 2005 2:38 pm

Re: XBrowse, columna valor calculado

Postby Cgallegoa » Wed May 15, 2024 9:11 pm

Carlos,

Un primer intento:

Code: Select all  Expand view
#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-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 473
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: XBrowse, columna valor calculado

Postby FranciscoA » Fri May 17, 2024 5:06 pm

Este codigo tambien te puede ser util.
Code: Select all  Expand view
//------------------------------------
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
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: XBrowse, columna valor calculado

Postby FiveWiDi » Fri May 17, 2024 7: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 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1137
Joined: Mon Oct 10, 2005 2:38 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: FiveWiDi and 49 guests