Error Excel

D.Fernandez
Posts: 492
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Error Excel

Post by D.Fernandez »

Amigos si me pueden ayudar les agradezco.
Tengo un cliente que lista a excel y le sale este error aleatoriamente.

Error description: Error BASE/1005 No existe la variable de instancia SIZE
Called from => SIZE()



Por favor una luz...

Gracias.
Ruben Dario Fernandez

Code: Select all | Expand

FUNCTION EXCELCUENTA(fechaini, fechafin, numedecli,logocolor) 
LOCAL xTOTI:=0 ,xxnFila:=0,xxnCol:=0, ntotalentradas:=0, ntotalsalidas:=0
local xxCO1:=0,xxCO2:=0,xxCO3:=0,xxCO4:=0,xxfec:=date(),xxdp:=0,xxhp:=0,xxdd:=0,xxhd:=0,xxDETA:=SPACE(25)
LOCAL xxhcc:=0,  xxDateDeSaldoaRetornar:=Date(), xxnElNuevoSaldo:=0, xxcuenta1,;
        xxnombresubcta, xxlhaydatos:= .F.,cNombrecuenta0:= "",lamoneda:= ""
LOCAL xXPRPRE1,xXPRMOV1, xXDBESE33,xxFila:=0 , xxColumna:= 0, xxCelda:=0, xXCLIENTE, xxNomApe:= "",xNmf:=1, xncol:=0, cArchivologo

LOCAL xXoExcel,xXoBook, xXoSheet,xXxl:=0, xXoHoja , xcHastaborde, xcnCol:="",xCOLUMNA:=0,xstrfila:="", cCuentaSub:= Space(9)

xXcuenta1 := numedecli 

XXPRPRE1:=TData():New(, "preliki")
IF XXPRPRE1:Use() 
    XXPRPRE1:SetOrder(1)
    XXPRPRE1:GOTOP()
Else
    MsgInfo( "Error aperura base de datos Cuentas", "Informe")
    RETURN(.F.)
Endif    

XXPRMOV1:=TData():New(, "jjmov")
IF XXPRMOV1:Use() 
    XXPRMOV1:SetOrder(1)
    XXPRMOV1:GOTOP()
Else
    XXPRPRE1:Close()
    MsgInfo( "Error aperura base de datos Cuentas", "Informe")
    RETURN(.F.)
Endif    
    
XXDBESE33 := TData():New(,"scta")
IF  XXDBESE33:Use() 
    XXDBESE33:SetOrder("STA")
    XXDBESE33:GOTOP()
    IF XXDBESE33:SEEK(numedecli )
        cNombrecuenta0:= XXDBESE33:SUCLINO 
        xxnombresubcta  := xXDBESE33:SUBNOM      
        cTipoMoneda:= xXDBESE33:Timon
        lamoneda:= cTipomoneda
    Else  
        MsgInfo( "No encuento la cuenta", "Error 593 de red")
        xXPRPRE1:Close()
        xXPRMOV1:Close()
        xXXDBESE33:Close()
        RETURN(.F.)
    Endif    
Else
    xXPRPRE1:Close()
    xXPRMOV1:Close()
    MsgInfo( "Error aperura base de datos Cuentas", "Informe")
    RETURN(.F.)
Endif        
XXDBESE33:Close() 



If Empty(clientegral )  
    Return(.F.) 
Endif 

xXoExcel := ExcelObj()
If xXoExcel == nil
    MsgInfo("Excel no está instalado", "Informe")     
    RETURN(.F.)
Endif   
xXoExcel := TOleAuto():New("Excel.Application")
xXoExcel:WorkBooks:Add()
xXoExcel:Sheets("Hoja1") ; xXoHoja:=xxoExcel:ActiveSheet()
xXoHoja:Cells:Font:Name := "Arial"
xXoHoja:Cells:Font:Size:= 8                     //10
xXoHoja:PageSetup:Orientation := 1
xXoExcel:DisplayAlerts := .f.

oRange:= xxoHoja:Range("B2:E2")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

oRange:= xxoHoja:Range("B3:E3")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

oRange:= xxoHoja:Range("B4:E4")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

oRange:= xxoHoja:Range("B5:E5")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

oRange:= xxoHoja:Range("B6:E6")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter

If logocolor
   xxoHoja:Shapes:AddPicture("C:\AlfaInmo\logocolor.jpg",.t.,.t.,2,2,60,40)         
Else
   xxoHoja:Shapes:AddPicture("C:\AlfaInmo\logonegro.jpg",.t.,.t.,2,2,60,40)         
Endif
   
    
//xxoHoja:Shapes:AddPicture(cArchivologo,.t.,.t.,2,2,60,40)                 //5.5
xXoHoja:Cells(2,2):Font:Name := "Verdana"   
xxoHoja:Cells(2,2):Font:Size := 12   
xxoHoja:Cells(2,2):Font:Bold := .T. 
xxoHoja:Cells(2,2):Value:= "INMOBILIARIA J&J"
xxoHoja:Cells(2,2):Font:Bold := .T.
xxoHoja:Cells(3,2):Value:= "Reporte de cuenta "+ xTrim(numedecli) + "  desde : "+  DtoC(fechaini) + "  hasta el : "+DtoC(fechafin)
xxoHoja:Cells(4,2):Value:= "Cliente : " + cNombrecuenta0


xXoHoja:Columns(1):ColumnWidth:= 10    
xXoHoja:Columns(2):ColumnWidth:= 24   
xXoHoja:Columns(3):ColumnWidth:= 10    
xXoHoja:Columns(4):ColumnWidth:= 10   
xXoHoja:Columns(5):ColumnWidth:= 10   
xXoHoja:Columns(6):ColumnWidth:= 10    

xxnElNuevoSaldo:= OTROSALDOANTERIOR(lamoneda, fechaini , fechafin , xxcuenta1 ) 

oRange:= xxoHoja:Range("B5:E5")    
oRange:MergeCells:= .T.    
oRange:HorizontalAlignment:=xlCenter
xXoHoja:Cells( 5, 2 ):HorizontalAlignment:=xlEdgeLeft 
xxoHoja:Cells(5,2):Value:= "Cuenta : " +xxcuenta1  +" "+XtRIM(xxnombresubcta)

If xTrim(cTipoMoneda)== "D"
    xxoHoja:Cells(6,2):Value:= HBA("Cuenta en dólares americanos")
Else
    xxoHoja:Cells(6,2):Value:= "Cuenta en pesos uruguayos"
Endif 

xxoHoja:Range("A7:F7"):Font:Name:= "Calibri"       
xxoHoja:Range("A7:F7"):Font:Size := 8      
xxoHoja:Range("A7:F7"):Font:Bold := .T.  
xxoHoja:Range("A7:F7"):Borders():LineStyle := 1       
xxoHoja:Range("A7:F7"):Interior:Color := CLR_YELLOW
xXoHoja:Cells( 7, 1 ):HorizontalAlignment:= -4131 
xXoHoja:Cells( 7, 3 ):HorizontalAlignment:=-4152
xXoHoja:Cells( 7, 4 ):HorizontalAlignment:=-4152 
xXoHoja:Cells( 7, 5 ):HorizontalAlignment:=-4152
xXoHoja:Cells( 7, 6 ):HorizontalAlignment:=-4152 

If xTrim(cTipoMoneda) == "D"
    xxoHoja:Cells(7,1):Value:= "Fecha"
    xxoHoja:Cells(7,2):Value:= "Detalles"
    xxoHoja:Cells(7,3):Value:= "Debe $"
    xxoHoja:Cells(7,4):Value:= "Haber $"
    xxoHoja:Cells(7,5):Value:= "Debe US$"
    xxoHoja:Cells(7,6):Value:= "Haber US$"
    xxoHoja:Cells(8,2):Value:= "Saldo anterior"

    IF xxnElNuevoSaldo < 0
        xxoHoja:Cells(8,5):NumberFormat := " ###,##0.00"    
        xxoHoja:Cells(8,5):Value:= Transform(xxnElNuevoSaldo,"9,999,999,999.99") 
    Else
        xxoHoja:Cells(8,6):NumberFormat := " ###,##0.00"    
        xxoHoja:Cells(8,6):Value:= Transform(xxnElNuevoSaldo,"9,999,999,999.99") 
    Endif 
Else
    xxoHoja:Cells(8,1):Value:= "Fecha"
    xxoHoja:Cells(8,2):Value:= "Detalles"
    xxoHoja:Cells(8,3):Value:= "Debe US$"
    xxoHoja:Cells(8,4):Value:= "Haber US$"
    xxoHoja:Cells(8,5):Value:= "Debe $"
    xxoHoja:Cells(8,6):Value:= "Haber $"
    xxoHoja:Cells(8,2):Value:= "Saldo anterior"
    IF xxnElNuevoSaldo < 0
        xxoHoja:Cells(8,5):NumberFormat := " ###,##0.00"    
        xxoHoja:Cells(8,5):Value:= Transform(xxnElNuevoSaldo,"9,999,999,999.99") 
    Else
        xxoHoja:Cells(8,6):NumberFormat := " ###,##0.00"    
        xxoHoja:Cells(8,6):Value:= Transform(xxnElNuevoSaldo,"9,999,999,999.99") 
    Endif
Endif 
SysRefresh()

xxnfila:= 8
xxPRMOV1:SetOrder("MCFE")  
xxPRMOV1:GOTOP()
IF xxPRMOV1:SEEK(alltrim(xxcuenta1 ))
        Do While !xxPRMOV1:EOF()               
            xxfec:=xxPRMOV1:MFEC
            If xxfec >= fechaini  .and. xxfec <= fechafin   .AND. Alltrim(xxPRMOV1:MPETA) == Alltrim(xxcuenta1) 
                xxdeta :=xxPRMOV1:MDESC  
                xxdp:=xxPRMOV1:MPEDEB
                xxhp:=xxPRMOV1:MPEHAB
                xxdd:=xxPRMOV1:MDODEBE
                xxhd:=xxPRMOV1:MDOHABE
                If xTrim(cTipomoneda) == "D"
                    ntotalentradas += xxhd
                    ntotalsalidas  += xxdd
                Else
                    ntotalentradas += xxdp
                    ntotalsalidas  += xxhp
                Endif
                If xTrim(cTipoMoneda )== "D"
                    xxnElNuevoSaldo :=( xxnElNuevoSaldo) + (xxdd)   + (xxhd)  
                    xxCO3+=(xxDD)
                    xxCO4+=(xxHD)
                    
                Else 
                    xxnElNuevoSaldo :=( xxnElNuevoSaldo) + (xxdp)   + (xxhp)  
                    xxCO3+=(xxDp)
                    xxCO4+=(xxHp)
                Endif
                lVi:=.t.
                If xTrim(cTipoMoneda)=="D"
                    xXnFila+=1
                    IF xxDP <> 0 .OR. xxHP <> 0 .OR. xxDD <> 0  .OR.  xxHD <> 0
                        lhaydatos := .t.
                        xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment:= -4131 
                        xxoHoja:Cells(xxnFila,1):Value:= DTOC(xXFEC)
                        xxoHoja:Cells(xxnFila,2):Value:= XtRIM(HBA(xXDETA))
                        IF xXDD <> 0
                            xxoHoja:Cells(xxnfila,3):NumberFormat := " ###,##0.00"    
                            IIF(xxdp < 0, xxoHoja:Cells(xxnFila,3):Value:= xxdp,   )
                            xxoHoja:Cells(xxnfila,5):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,5):Value:= xxdd
                        Endif 
                        IF xXHD <> 0
                            xxoHoja:Cells(xxnfila,4):NumberFormat := " ###,##0.00"    
                            IIF(xxhp > 0, xxoHoja:Cells(xxnFila,4):Value:= xxhp,   )
                            xxoHoja:Cells(xxnfila,6):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,6):Value:= xxhd   
                        Endif 
                    Endif
                Else 
                    xXnFila+=1
                    IF xXDP <> 0 .OR. xXHP <> 0 .OR. xXDD <> 0  .OR.  xXHD <> 0
                        lhaydatos := .t.
                        xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment:= -4131 
                        xxoHoja:Cells(xxnFila,1):Value:= DTOC(xXFEC)
                        xxoHoja:Cells(xxnFila,2):Value:= XtRIM(HBA(xXDETA))
                        IF xxDp <> 0
                            xxoHoja:Cells(xxnfila,3):NumberFormat := " ###,##0.00"    
                            IIF(xxhp < 0, xxoHoja:Cells(xxnFila,3):Value:= xxhp,   )    
                            xxoHoja:Cells(xxnfila,5):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,5):Value:=xxdp
                        Endif 
                        IF xxHp <> 0
                            xxoHoja:Cells(xxnfila,4):NumberFormat := " ###,##0.00"    
                            IIF(xxhd > 0, xxoHoja:Cells(xxnFila,4):Value:= xxhd,   )    
                            xxoHoja:Cells(xxnfila,6):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,6):Value:= xxhp
                        Endif 
                    Endif
                Endif 
                SysRefresh()
                xxPRMOV1:SKIP(1) 
            Else
               xxPRMOV1:SKIP(1) 
            Endif
        EndDo  
Endif
//xxnfila+=2
xxPRPRE1:SetOrder("PLCFE" )         
xxPRPRE1:GOTOP()
IF xXPRPRE1:SEEK(alltrim(xXcuenta1 ))
    Do while  !xXPRPRE1:Eof()  
        xXfec:=xXPRPRE1:pfecha
        xXpepeta:= xXPRPRE1:peta         //sub
        if (xXfec >= fechaini  .and. xXfec <= fechafin )    .AND. xXPRPRE1:PETA == xXcuenta1  
            xXdeta :=xxPRPRE1:pdeta  
            xXdp:=xXPRPRE1:pedebe
            xXhp:=xXPRPRE1:pehaber
            xXdd:=xXPRPRE1:doldeb
            xXhd:=xXPRPRE1:dolhab
            If xTrim(cTipomoneda) == "D"
                ntotalentradas += xxhd
                ntotalsalidas  += xxdd
            Else
                ntotalentradas += xxdp
                ntotalsalidas  += xxhp
            Endif
            If xTrim(cTipoMoneda) == "D"
                xXnElNuevoSaldo :=( xXnElNuevoSaldo) + (xXdd)   + (xXhd)  
                xXCO3+=(xXDD)
                xXCO4+=(xXHD)
            Else
                xXnElNuevoSaldo := (xXnElNuevoSaldo) + (xXdp)   + (xXhp) 
                xXCO3+=(xXDp)
                xXCO4+=(xXHp)
            Endif
            lVi :=.t.
            IF xXDD <> 0  .OR. xXDP <> 0 .OR. xXHP <> 0 .OR. xXHD <> 0
                xxnFila+=1
                lhaydatos := .T. 
                xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment:= -4131 
                xxoHoja:Cells(xxnFila,1):Value:= DTOC(xXFEC)
                xxoHoja:Cells(xxnFila,2):Value:=hba( XtRIM(xXDETA))

                If xTrim(cTipoMoneda) == "D"
                    IF xXDD <> 0
                        xxoHoja:Cells(xxnfila,3):NumberFormat := " ###,##0.00"    
                        IIF(xxdp < 0, xxoHoja:Cells(xxnFila,3):Value:= xxdp,   )    
                        xxoHoja:Cells(xxnfila,5):NumberFormat := " ###,##0.00"    
                        xxoHoja:Cells(xxnFila,5):Value:= xxdd
                    Endif 
                    IF xXHD <> 0
                        xxoHoja:Cells(xxnfila,4):NumberFormat := " ###,##0.00"    
                        IIF(xxhp > 0, xxoHoja:Cells(xxnFila,4):Value:= xxhp,   )    
                        xxoHoja:Cells(xxnfila,6):NumberFormat := " ###,##0.00"    
                        xxoHoja:Cells(xxnFila,6):Value:= xxhd
                    Endif
                Else 
                    IF xXDP <> 0 .OR. xXHP <> 0 .OR. xXDD <> 0  .OR.  xXHD <> 0
                        lhaydatos := .t.
                        IF xxDp <> 0
                            xxoHoja:Cells(xxnfila,3):NumberFormat := " ###,##0.00"    
                            IIF(xxdd > 0, xxoHoja:Cells(xxnFila,4):Value:= xxdd,   )    
                            xxoHoja:Cells(xxnfila,5):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,5):Value:= xxdp
                        Endif 
                        IF xxHp <> 0
                            xxoHoja:Cells(xxnfila,4):NumberFormat := " ###,##0.00"    
                            IIF(xxhd > 0, xxoHoja:Cells(xxnFila,4):Value:= xxhd,   )    
                            xxoHoja:Cells(xxnfila,6):NumberFormat := " ###,##0.00"    
                            xxoHoja:Cells(xxnFila,6):Value:= xxhp 
                        Endif 
                    Endif
                Endif 

            Endif
            xxPRPRE1:SKIP(1)
        Else 
            xxPRPRE1:SKIP(1)
        Endif
    EndDo 
    xxnfila+=3  
Endif 

MsgInfo() 

If xxnElNuevoSaldo < 0
    oRange:= xxoHoja:Range("A"+xTrim(Str(xxnfila-1))+":D"+xTrim(Str(xxnfila-1)))    
    oRange:MergeCells:= .T.
    xxoHoja:Range( "A"+xTrim(Str(xxnfila-1)) + ":F"+xTrim(Str(xxnfila-1 ))):Borders():LineStyle := 1
    xXoHoja:Cells( xxnFila-1, 2 ):Font:Bold   := .T.
    xXoHoja:Cells( xxnFila-1, 2 ):Font:Italic   := .T.
    xXoHoja:Cells( xxnFila-1,5 ):Font:Bold   := .T.
    xXoHoja:Cells( xxnFila-1, 5 ):Font:Italic   := .T.
    xxoHoja:Cells(xxnFila-1,1):Value:= "Saldo ....."
    xxoHoja:Cells(xxnFila-1,5):Value:= xxnElNuevoSaldo
Else
    oRange:= xxoHoja:Range("A"+xTrim(Str(xxnfila-1))+":D"+xTrim(Str(xxnfila-1)))    
    oRange:MergeCells:= .T.
    xxoHoja:Range( "A"+xTrim(Str(xxnfila-1)) + ":F"+xTrim(Str(xxnfila-1 ))):Borders():LineStyle := 1
    xXoHoja:Cells( xxnFila-1, 2 ):Font:Bold   := .T.
    xXoHoja:Cells( xxnFila-1, 2 ):Font:Italic   := .T.
    xXoHoja:Cells( xxnFila-1, 6 ):Font:Bold   := .T.
    xXoHoja:Cells( xxnFila-1, 6 ):Font:Italic   := .T.
    xxoHoja:Cells(xxnFila-1,1):Value:= "Saldo ....."
    xxoHoja:Cells(xxnFila-1,6):Value:= xxnElNuevoSaldo
Endif 
xxnfila +=2
xxoHoja:Cells(xxnFila,6):Value:= ntotalentradas
xxnfila +=1
xxoHoja:Cells(xxnFila,6):Value:= ntotalsalidas

MsgInfo(ntotalentradas )
MsgInfo(ntotalsalidas)




XxoHoja := XxoExcel:ActiveSheet()
XxoExcel:Visible := .T.
Hb_GCall(.T.)
            
XxPRPRE1:Close()
XxPRMOV1:Close() 
SysRefresh()
    

RETURN(.F.)
Dario Fernandez
FWH 24.09, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
User avatar
Jimmy
Posts: 1733
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany

Re: Error Excel

Post by Jimmy »

hi,

it is not Method Size() itself

you need to "check" if ActiveX Object was create() :!:

Code: Select all | Expand

xXoExcel := TOleAuto():New("Excel.Application")
If xXoExcel == nil
    MsgInfo("Excel not create", "Informe")    
    RETURN(.F.)
Endif
greeting,
Jimmy
D.Fernandez
Posts: 492
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Re: Error Excel

Post by D.Fernandez »

Thank you, I will update my software and test in the client machine.

Regrds

Ruben Dario Fernandez
Dario Fernandez
FWH 24.09, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Error Excel

Post by karinha »

Ejemplo:

Download completo:

https://mega.nz/file/lRMgVB5S#paOmgDXM_ ... hoHXb-PuJE

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: Error Excel

Post by paquitohm »

D.Fernandez
Posts: 492
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Re: Error Excel

Post by D.Fernandez »

Gracias karinha, tengo hecha un listado con FileXLS
que funciona bien.
Lo que pasa que el cliente se acostumbró al otro excel, *.xlsx que queda mejor.

Seguire buscanbo a ver que encuentro.

Muchas gracias.
Dario Fernandez
FWH 24.09, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Error Excel

Post by karinha »

D.Fernandez wrote:Gracias karinha, tengo hecha un listado con FileXLS
que funciona bien.
Lo que pasa que el cliente se acostumbró al otro excel, *.xlsx que queda mejor.

Seguire buscanbo a ver que encuentro.

Muchas gracias.
Ruben, puede muestrar un ejemplo porfa? És mejor para probar.

Mira:

https://app.box.net/s/lck9effuyn?page=3

https://forums.fivetechsupport.com/viewtopic.php?t=6849


gracias.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
D.Fernandez
Posts: 492
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Re: Error Excel

Post by D.Fernandez »

Gracias paquitohm, lo tengo funcionando con FilesXLS,
pero el cliente se acostumbró al *.xlsx que queda mejor y ahora quiere ese tipo de planilla.

Seguiré viendo.

Muchas Gracias.

Ruben Fernandez
Dario Fernandez
FWH 24.09, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
D.Fernandez
Posts: 492
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Re: Error Excel

Post by D.Fernandez »

Hola Jimmy, recien vengo de la casa del cliente, con _ tambien me salio el mismo error.

Seguire viendo.
Esto me tiene loco ya.

Muchas gracias.

Ruben Fernandez
Dario Fernandez
FWH 24.09, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Error Excel

Post by karinha »

Ruben, mira como lo haria:

Code: Select all | Expand

// C:\FWH..\SAMPLES\RUBENS2.PRG

FUNCTION EXCELCUENTA( fechaini, fechafin, numedecli, logocolor )

   LOCAL xTOTI := 0, xxnFila := 0, xxnCol := 0, ntotalentradas := 0, ntotalsalidas := 0
   LOCAL xxCO1 := 0, xxCO2 := 0, xxCO3 := 0, xxCO4 := 0, xxfec := Date(), xxdp := 0, xxhp := 0, xxdd := 0, xxhd := 0, xxDETA := Space( 25 )
   LOCAL xxhcc := 0,  xxDateDeSaldoaRetornar := Date(), xxnElNuevoSaldo := 0, xxcuenta1, ;
      xxnombresubcta, xxlhaydatos := .F., cNombrecuenta0 := "", lamoneda := ""
   LOCAL xXPRPRE1, xXPRMOV1, xXDBESE33, xxFila := 0, xxColumna := 0, xxCelda := 0, xXCLIENTE, xxNomApe := "", xNmf := 1, xncol := 0, cArchivologo
   LOCAL oExcel, xXoBook, xXoSheet, xXxl := 0, xXoHoja, xcHastaborde, xcnCol := "", xCOLUMNA := 0, xstrfila := "", cCuentaSub := Space( 9 )

   hb_gcAll( .F. )  // limpia basura. caso tenga.m aqui si Ruben.

   xXcuenta1 := numedecli

   XXPRPRE1 := TData():New(, "preliki" )

   IF XXPRPRE1:Use()
      XXPRPRE1:SetOrder( 1 )
      XXPRPRE1:GOTOP()
   ELSE
      MsgInfo( "Error aperura base de datos Cuentas", "Informe" )
      RETURN( .F. )
   ENDIF

   XXPRMOV1 := TData():New(, "jjmov" )

   IF XXPRMOV1:Use()
      XXPRMOV1:SetOrder( 1 )
      XXPRMOV1:GOTOP()
   ELSE
      XXPRPRE1:Close()
      MsgInfo( "Error aperura base de datos Cuentas", "Informe" )
      RETURN( .F. )
   ENDIF

   XXDBESE33 := TData():New(, "scta" )

   IF XXDBESE33:Use()
      XXDBESE33:SetOrder( "STA" )
      XXDBESE33:GOTOP()

      IF XXDBESE33:SEEK( numedecli )
         cNombrecuenta0 := XXDBESE33:SUCLINO
         xxnombresubcta  := xXDBESE33:SUBNOM
         cTipoMoneda := xXDBESE33:Timon
         lamoneda := cTipomoneda
      ELSE
         MsgInfo( "No encuento la cuenta", "Error 593 de red" )
         xXPRPRE1:Close()
         xXPRMOV1:Close()
         xXXDBESE33:Close()
         RETURN( .F. )
      ENDIF

   ELSE

      xXPRPRE1:Close()
      xXPRMOV1:Close()
      MsgInfo( "Error aperura base de datos Cuentas", "Informe" )
      RETURN( .F. )
   ENDIF

   XXDBESE33:Close()

   IF Empty( clientegral )
      Return( .F. )
   ENDIF

   oExcel := ExcelObj()

   IF oExcel == nil
      MsgInfo( "Excel no está instalado", "Informe" )
      RETURN( .F. )
   ENDIF

   TRY

      oExcel := TOleAuto():New( "Excel.Application" )

   CATCH

      TRY

         oExcel = CreateObject( "Excel.Application" )

      CATCH

         /*
         MsgInfo( "Excel is not installed on this PC. " + ;
                  "You need Excel to continue", "Ooooopppsss" )
         */

         MsgInfo( "Excel no está instalado", "Informe" )

         RETURN( .F. )

      END

   END

   oExcel:WorkBooks:Add()

   oExcel:DisplayAlerts := .F.
   oExcel:Visible       := .T.

   // oWorksheet := oExcel:Get( "ActiveSheet" )
   oExcel:Sheets( "Hoja1" ) ; xXoHoja := oExcel:ActiveSheet()

   xXoHoja:Cells:Font:Name := "Arial"
   xXoHoja:Cells:Font:Size := 8                     // 10
   xXoHoja:PageSetup:Orientation := 1

   oRange := xxoHoja:Range( "B2:E2" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   oRange := xxoHoja:Range( "B3:E3" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   oRange := xxoHoja:Range( "B4:E4" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   oRange := xxoHoja:Range( "B5:E5" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   oRange := xxoHoja:Range( "B6:E6" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter

   IF logocolor
      xxoHoja:Shapes:AddPicture( "C:\AlfaInmo\logocolor.jpg", .T., .T., 2, 2, 60, 40 )
   ELSE
      xxoHoja:Shapes:AddPicture( "C:\AlfaInmo\logonegro.jpg", .T., .T., 2, 2, 60, 40 )
   ENDIF

   // xxoHoja:Shapes:AddPicture(cArchivologo,.t.,.t.,2,2,60,40)                 //5.5
   xXoHoja:Cells( 2, 2 ):Font:Name := "Verdana"
   xxoHoja:Cells( 2, 2 ):Font:Size := 12
   xxoHoja:Cells( 2, 2 ):Font:Bold := .T.
   xxoHoja:Cells( 2, 2 ):Value := "INMOBILIARIA J&J"
   xxoHoja:Cells( 2, 2 ):Font:Bold := .T.
   xxoHoja:Cells( 3, 2 ):Value := "Reporte de cuenta " + xTrim( numedecli ) + "  desde : " +  DToC( fechaini ) + "  hasta el : " + DToC( fechafin )
   xxoHoja:Cells( 4, 2 ):Value := "Cliente : " + cNombrecuenta0


   xXoHoja:Columns( 1 ):ColumnWidth := 10
   xXoHoja:Columns( 2 ):ColumnWidth := 24
   xXoHoja:Columns( 3 ):ColumnWidth := 10
   xXoHoja:Columns( 4 ):ColumnWidth := 10
   xXoHoja:Columns( 5 ):ColumnWidth := 10
   xXoHoja:Columns( 6 ):ColumnWidth := 10

   // Que hace?
   xxnElNuevoSaldo := OTROSALDOANTERIOR( lamoneda, fechaini, fechafin, xxcuenta1 )

   oRange := xxoHoja:Range( "B5:E5" )
   oRange:MergeCells := .T.
   oRange:HorizontalAlignment := xlCenter
   xXoHoja:Cells( 5, 2 ):HorizontalAlignment := xlEdgeLeft
   xxoHoja:Cells( 5, 2 ):Value := "Cuenta : " + xxcuenta1  + " " + XtRIM( xxnombresubcta )

   IF xTrim( cTipoMoneda ) == "D"
      xxoHoja:Cells( 6, 2 ):Value := HBA( "Cuenta en dólares americanos" )
   ELSE
      xxoHoja:Cells( 6, 2 ):Value := "Cuenta en pesos uruguayos"
   ENDIF

   xxoHoja:Range( "A7:F7" ):Font:Name := "Calibri"
   xxoHoja:Range( "A7:F7" ):Font:Size := 8
   xxoHoja:Range( "A7:F7" ):Font:Bold := .T.
   xxoHoja:Range( "A7:F7" ):Borders():LineStyle := 1
   xxoHoja:Range( "A7:F7" ):Interior:COLOR := CLR_YELLOW
   xXoHoja:Cells( 7, 1 ):HorizontalAlignment := -4131
   xXoHoja:Cells( 7, 3 ):HorizontalAlignment := -4152
   xXoHoja:Cells( 7, 4 ):HorizontalAlignment := -4152
   xXoHoja:Cells( 7, 5 ):HorizontalAlignment := -4152
   xXoHoja:Cells( 7, 6 ):HorizontalAlignment := -4152

   IF xTrim( cTipoMoneda ) == "D"
      xxoHoja:Cells( 7, 1 ):Value := "Fecha"
      xxoHoja:Cells( 7, 2 ):Value := "Detalles"
      xxoHoja:Cells( 7, 3 ):Value := "Debe $"
      xxoHoja:Cells( 7, 4 ):Value := "Haber $"
      xxoHoja:Cells( 7, 5 ):Value := "Debe US$"
      xxoHoja:Cells( 7, 6 ):Value := "Haber US$"
      xxoHoja:Cells( 8, 2 ):Value := "Saldo anterior"

      IF xxnElNuevoSaldo < 0
         xxoHoja:Cells( 8, 5 ):NumberFormat := " ###,##0.00"
         xxoHoja:Cells( 8, 5 ):Value := Transform( xxnElNuevoSaldo, "9,999,999,999.99" )
      ELSE
         xxoHoja:Cells( 8, 6 ):NumberFormat := " ###,##0.00"
         xxoHoja:Cells( 8, 6 ):Value := Transform( xxnElNuevoSaldo, "9,999,999,999.99" )
      ENDIF

   ELSE

      xxoHoja:Cells( 8, 1 ):Value := "Fecha"
      xxoHoja:Cells( 8, 2 ):Value := "Detalles"
      xxoHoja:Cells( 8, 3 ):Value := "Debe US$"
      xxoHoja:Cells( 8, 4 ):Value := "Haber US$"
      xxoHoja:Cells( 8, 5 ):Value := "Debe $"
      xxoHoja:Cells( 8, 6 ):Value := "Haber $"
      xxoHoja:Cells( 8, 2 ):Value := "Saldo anterior"

      IF xxnElNuevoSaldo < 0
         xxoHoja:Cells( 8, 5 ):NumberFormat := " ###,##0.00"
         xxoHoja:Cells( 8, 5 ):Value := Transform( xxnElNuevoSaldo, "9,999,999,999.99" )
      ELSE
         xxoHoja:Cells( 8, 6 ):NumberFormat := " ###,##0.00"
         xxoHoja:Cells( 8, 6 ):Value := Transform( xxnElNuevoSaldo, "9,999,999,999.99" )
      ENDIF

   ENDIF

   // SysRefresh() // no use aqui

   xxnfila := 8

   xxPRMOV1:SetOrder( "MCFE" )
   xxPRMOV1:GOTOP()

   IF xxPRMOV1:SEEK( AllTrim( xxcuenta1 ) )

      WHILE( .NOT. xxPRMOV1:EOF() )

         SYSREFRESH() // AQUI si.

         xxfec := xxPRMOV1:MFEC

         IF xxfec >= fechaini  .AND. xxfec <= fechafin   .AND. AllTrim( xxPRMOV1:MPETA ) == AllTrim( xxcuenta1 )

            xxdeta := xxPRMOV1:MDESC
            xxdp := xxPRMOV1:MPEDEB
            xxhp := xxPRMOV1:MPEHAB
            xxdd := xxPRMOV1:MDODEBE
            xxhd := xxPRMOV1:MDOHABE

            IF xTrim( cTipomoneda ) == "D"
               ntotalentradas += xxhd
               ntotalsalidas  += xxdd
            ELSE
               ntotalentradas += xxdp
               ntotalsalidas  += xxhp
            ENDIF

            IF xTrim( cTipoMoneda ) == "D"
               xxnElNuevoSaldo := ( xxnElNuevoSaldo ) + ( xxdd )   + ( xxhd )
               xxCO3 += ( xxDD )
               xxCO4 += ( xxHD )

            ELSE
               xxnElNuevoSaldo := ( xxnElNuevoSaldo ) + ( xxdp )   + ( xxhp )
               xxCO3 += ( xxDp )
               xxCO4 += ( xxHp )
            ENDIF

            lVi := .T.

            IF xTrim( cTipoMoneda ) == "D"

               xXnFila += 1

               IF xxDP <> 0 .OR. xxHP <> 0 .OR. xxDD <> 0  .OR.  xxHD <> 0

                  lhaydatos := .T.
                  xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment := -4131
                  xxoHoja:Cells( xxnFila, 1 ):Value := DToC( xXFEC )
                  xxoHoja:Cells( xxnFila, 2 ):Value := XtRIM( HBA( xXDETA ) )

                  IF xXDD <> 0
                     xxoHoja:Cells( xxnfila, 3 ):NumberFormat := " ###,##0.00"
                     iif( xxdp < 0, xxoHoja:Cells( xxnFila, 3 ):Value := xxdp,   )
                     xxoHoja:Cells( xxnfila, 5 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 5 ):Value := xxdd
                  ENDIF

                  IF xXHD <> 0
                     xxoHoja:Cells( xxnfila, 4 ):NumberFormat := " ###,##0.00"
                     iif( xxhp > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxhp,   )
                     xxoHoja:Cells( xxnfila, 6 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 6 ):Value := xxhd
                  ENDIF

               ENDIF

            ELSE

               xXnFila += 1

               IF xXDP <> 0 .OR. xXHP <> 0 .OR. xXDD <> 0  .OR.  xXHD <> 0

                  lhaydatos := .T.

                  xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment := -4131
                  xxoHoja:Cells( xxnFila, 1 ):Value := DToC( xXFEC )
                  xxoHoja:Cells( xxnFila, 2 ):Value := XtRIM( HBA( xXDETA ) )

                  IF xxDp <> 0

                     xxoHoja:Cells( xxnfila, 3 ):NumberFormat := " ###,##0.00"
                     iif( xxhp < 0, xxoHoja:Cells( xxnFila, 3 ):Value := xxhp,   )
                     xxoHoja:Cells( xxnfila, 5 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 5 ):Value := xxdp

                  ENDIF

                  IF xxHp <> 0

                     xxoHoja:Cells( xxnfila, 4 ):NumberFormat := " ###,##0.00"
                     iif( xxhd > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxhd,   )
                     xxoHoja:Cells( xxnfila, 6 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 6 ):Value := xxhp

                  ENDIF

               ENDIF

            ENDIF

            // SysRefresh() // no use aqui

            // xxPRMOV1:SKIP( 1 )

            SKIP

         ELSE

            // xxPRMOV1:SKIP( 1 )

            SKIP

         ENDIF

      ENDDO

   ENDIF

   // xxnfila+=2

   xxPRPRE1:SetOrder( "PLCFE" ) // SET ORDER TO... 01,02,03,04, etc.

   GO TOP

   //xxPRPRE1:GOTOP()

   IF xXPRPRE1:SEEK( AllTrim( xXcuenta1 ) )

      WHILE( .NOT. xXPRPRE1:EOF() )

         SYSREFRESH() // AQUI si.

         xXfec := xXPRPRE1:pfecha
         xXpepeta := xXPRPRE1:peta         // sub

         IF ( xXfec >= fechaini  .AND. xXfec <= fechafin )    .AND. xXPRPRE1:PETA == xXcuenta1

            xXdeta := xxPRPRE1:pdeta
            xXdp := xXPRPRE1:pedebe
            xXhp := xXPRPRE1:pehaber
            xXdd := xXPRPRE1:doldeb
            xXhd := xXPRPRE1:dolhab

            IF xTrim( cTipomoneda ) == "D"
               ntotalentradas += xxhd
               ntotalsalidas  += xxdd
            ELSE
               ntotalentradas += xxdp
               ntotalsalidas  += xxhp
            ENDIF

            IF xTrim( cTipoMoneda ) == "D"
               xXnElNuevoSaldo := ( xXnElNuevoSaldo ) + ( xXdd )   + ( xXhd )
               xXCO3 += ( xXDD )
               xXCO4 += ( xXHD )
            ELSE
               xXnElNuevoSaldo := ( xXnElNuevoSaldo ) + ( xXdp )   + ( xXhp )
               xXCO3 += ( xXDp )
               xXCO4 += ( xXHp )
            ENDIF

            lVi := .T.

            IF xXDD <> 0  .OR. xXDP <> 0 .OR. xXHP <> 0 .OR. xXHD <> 0

               xxnFila += 1
               lhaydatos := .T.

               xXoHoja:Cells( xxnfila, 1 ):HorizontalAlignment := -4131
               xxoHoja:Cells( xxnFila, 1 ):Value := DToC( xXFEC )
               xxoHoja:Cells( xxnFila, 2 ):Value := hba( XtRIM( xXDETA ) )

               IF xTrim( cTipoMoneda ) == "D"

                  IF xXDD <> 0
                     xxoHoja:Cells( xxnfila, 3 ):NumberFormat := " ###,##0.00"
                     iif( xxdp < 0, xxoHoja:Cells( xxnFila, 3 ):Value := xxdp,   )
                     xxoHoja:Cells( xxnfila, 5 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 5 ):Value := xxdd
                  ENDIF

                  IF xXHD <> 0
                     xxoHoja:Cells( xxnfila, 4 ):NumberFormat := " ###,##0.00"
                     iif( xxhp > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxhp,   )
                     xxoHoja:Cells( xxnfila, 6 ):NumberFormat := " ###,##0.00"
                     xxoHoja:Cells( xxnFila, 6 ):Value := xxhd
                  ENDIF

               ELSE

                  IF xXDP <> 0 .OR. xXHP <> 0 .OR. xXDD <> 0  .OR.  xXHD <> 0

                     lhaydatos := .T.

                     IF xxDp <> 0
                        xxoHoja:Cells( xxnfila, 3 ):NumberFormat := " ###,##0.00"
                        iif( xxdd > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxdd,   )
                        xxoHoja:Cells( xxnfila, 5 ):NumberFormat := " ###,##0.00"
                        xxoHoja:Cells( xxnFila, 5 ):Value := xxdp
                     ENDIF

                     IF xxHp <> 0

                        xxoHoja:Cells( xxnfila, 4 ):NumberFormat := " ###,##0.00"
                        iif( xxhd > 0, xxoHoja:Cells( xxnFila, 4 ):Value := xxhd,   )
                        xxoHoja:Cells( xxnfila, 6 ):NumberFormat := " ###,##0.00"
                        xxoHoja:Cells( xxnFila, 6 ):Value := xxhp

                     ENDIF

                  ENDIF

               ENDIF

            ENDIF

            // xxPRPRE1:SKIP( 1 )

            SKIP

         ELSE

            // xxPRPRE1:SKIP( 1 )

            SKIP

         ENDIF

      ENDDO

      xxnfila += 3

   ENDIF

   // MsgInfo()  // ??? Para?

   IF xxnElNuevoSaldo < 0

      oRange := xxoHoja:Range( "A" + xTrim( Str( xxnfila - 1 ) ) + ":D" + xTrim( Str( xxnfila - 1 ) ) )
      oRange:MergeCells := .T.
      xxoHoja:Range( "A" + xTrim( Str( xxnfila - 1 ) ) + ":F" + xTrim( Str( xxnfila - 1 ) ) ):Borders():LineStyle := 1
      xXoHoja:Cells( xxnFila - 1, 2 ):Font:Bold   := .T.
      xXoHoja:Cells( xxnFila - 1, 2 ):Font:Italic   := .T.
      xXoHoja:Cells( xxnFila - 1, 5 ):Font:Bold   := .T.
      xXoHoja:Cells( xxnFila - 1, 5 ):Font:Italic   := .T.
      xxoHoja:Cells( xxnFila - 1, 1 ):Value := "Saldo ....."
      xxoHoja:Cells( xxnFila - 1, 5 ):Value := xxnElNuevoSaldo

   ELSE

      oRange := xxoHoja:Range( "A" + xTrim( Str( xxnfila - 1 ) ) + ":D" + xTrim( Str( xxnfila - 1 ) ) )
      oRange:MergeCells := .T.

      xxoHoja:Range( "A" + xTrim( Str( xxnfila - 1 ) ) + ":F" + xTrim( Str( xxnfila - 1 ) ) ):Borders():LineStyle := 1
      xXoHoja:Cells( xxnFila - 1, 2 ):Font:Bold   := .T.
      xXoHoja:Cells( xxnFila - 1, 2 ):Font:Italic   := .T.
      xXoHoja:Cells( xxnFila - 1, 6 ):Font:Bold   := .T.
      xXoHoja:Cells( xxnFila - 1, 6 ):Font:Italic   := .T.
      xxoHoja:Cells( xxnFila - 1, 1 ):Value := "Saldo ....."
      xxoHoja:Cells( xxnFila - 1, 6 ):Value := xxnElNuevoSaldo

   ENDIF

   xxnfila += 2

   xxoHoja:Cells( xxnFila, 6 ):Value := ntotalentradas

   xxnfila += 1
   xxoHoja:Cells( xxnFila, 6 ):Value := ntotalsalidas

   //MsgInfo( ntotalentradas )
   //MsgInfo( ntotalsalidas )

   XxoHoja := oExcel:ActiveSheet()

   oExcel:Visible := .T.

   // hb_gcAll( .T. )  // no use aqui

   XxPRPRE1:Close()  // Porque?
   XxPRMOV1:Close()  // Porque?

   // SysRefresh() NO USE AQUI

// RETURN( .F. )  // NO ES UN VALID()

RETURN NIL

// FIN / END
 
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
Jimmy
Posts: 1733
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany

Re: Error Excel

Post by Jimmy »

hi,
D.Fernandez wrote:recien vengo de la casa del cliente, con _ tambien me salio el mismo error.
when Excel Object is valid i wonder that it fail when access Method

---

what OS and which Office / Excel Version :?:
does it crash when call Excel 1st Time or "later" when call Excel again :?:

general you can put all into a BEGIN SEQUENCE / END to recover when get Error
greeting,
Jimmy
D.Fernandez
Posts: 492
Joined: Wed Jul 31, 2013 1:14 pm
Location: Maldonado - Uruguay
Contact:

Re: Error Excel

Post by D.Fernandez »

Hi Jimmy, I tell you later, don't know.

It's very strange.

With my Winn 11 and Office 365, nothing happend.

Thank you very much

Best regards

Ruben Fernandez
Dario Fernandez
FWH 24.09, Harbour, MVS2022 Community, BCC, MySql & MariaDB, Dbf/Cdx VSCode.
Maldonado - Uruguay
rubenfernandez01
Posts: 48
Joined: Sun Sep 20, 2015 1:41 am

Re: Error Excel

Post by rubenfernandez01 »

Hi Jimmy, I believe that the problem in win XP, because in win 11 run ok.

Enviado desde mi 21081111RG mediante Tapatalk
User avatar
Jimmy
Posts: 1733
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany

Re: Error Excel

Post by Jimmy »

hi,
rubenfernandez01 wrote:believe that the problem in win XP, because in win 11 run ok.
i wonder that People still use Windows XP ...

you can try to "check" if Property / Method exist in older Excel Version

Code: Select all | Expand

FUNCTION __objHasData( oObject, cSymbol )

   IF ! HB_ISOBJECT( oObject ) .OR. ! HB_ISSTRING( cSymbol )
      __errRT_BASE( EG_ARG, 3101, , ProcName( 0 ) )
   ENDIF

RETURN ;
   __objHasMsg( oObject, cSymbol ) .AND. ;
   __objHasMsg( oObject, "_" + cSymbol )

Code: Select all | Expand

FUNCTION __objHasMethod( oObject, cSymbol )

   IF ! HB_ISOBJECT( oObject ) .OR. ! HB_ISSTRING( cSymbol )
      __errRT_BASE( EG_ARG, 3101, , ProcName( 0 ) )
   ENDIF

RETURN ;
   __objHasMsg( oObject, cSymbol ) .AND. ;
   ! __objHasMsg( oObject, "_" + cSymbol )
greeting,
Jimmy
rubenfernandez01
Posts: 48
Joined: Sun Sep 20, 2015 1:41 am

Re: Error Excel

Post by rubenfernandez01 »

Jimmy, thanks, I will try.

Regards,
Ruben Dario Fernandez

Enviado desde mi 21081111RG mediante Tapatalk
Post Reply