Page 1 of 1

Mr. Rao, From PREVIEW To Excel (SOLVED)

Posted: Wed Mar 03, 2021 7:21 pm
by Armando
Mr. Rao:

I have the following code.

Code: Select all | Expand


    REPORT oReporte CAPTION cTitulo PREVIEW ;
        HEADER ALLTRIM(oApp:cRazonSocial),;
        "",;
        cTitulo CENTER;
        TITLE "Fecha: "+Date2Txt(DATE()),;
        "Hoja No:"+STR(oReporte:nPage,3);
        FONT oFont1,oFont2,oFont3;
        PEN oPen1,oPen2

        COLUMN TITLE "Folio"            DATA "" SIZE  4 RIGHT
        COLUMN TITLE "Concepto"     DATA "" SIZE 35 LEFT
        COLUMN TITLE "Referencia"   DATA "" SIZE 12 LEFT
        COLUMN TITLE "Importe"      DATA "" SIZE 11 RIGHT
        COLUMN TITLE "Prestamos"    DATA "" SIZE 11 RIGHT
    END REPORT

    IF oReporte:lCreated
        oReporte:SetTxtColor(CLR_BLACK,1)
        oReporte:SetTxtColor(CLR_HRED,2)
        oReporte:SetTxtColor(CLR_HRED,3)
        oReporte:SetPenColor(CLR_HBLUE)
        oReporte:SetShdColor(CLR_YELLOW)
        oReporte:oHeader:aFont[1] := {||3}

        oReporte:oTitle:aPad[1] := RPT_LEFT
        oReporte:oTitle:aPad[2] := RPT_RIGHT

      oReporte:bInit := {|| oRsGas:MoveFirst() }

        oReporte:nTopMargin     := 300
        oReporte:nDnMargin      := 300

       oReporte:bSkip := { || (nLinea++, oRsGas:MoveNext())}

    ENDIF

   ACTIVATE REPORT oReporte ;
        ON STARTPAGE Alinea(oReporte,1,2);
        ON CHANGE PonDet(oReporte);
        ON END (TotFin(oReporte,oBrw),oRsGas:BookMark := nBookMark);
      WHILE nLinea <= nHasta

    oRsGas:SORT := "GAS_GAS ASC"

    oBrw:Refresh()

    oFont1:Release()
    oFont2:Release()
    oFont3:Release()
    oPen1:Release()
    oPen2:Release()
RETURN(.T.)
 


Image

But when exporting it to Excel shows it incomplete, could you help me?, what am I omitting?

Image

With best regards

Re: Mr. Rao, From PREVIEW To Excel

Posted: Wed Mar 03, 2021 9:11 pm
by karinha
Que belo REPORT Armando, podrias poner el código completo para el amigo aqui?

Muchas gracias.

Regards, saludos.

Re: Mr. Rao, From PREVIEW To Excel

Posted: Wed Mar 03, 2021 9:45 pm
by Armando
Karinha:

El código está completo. Si te reclama algo me avisas.

Saludos

Re: Mr. Rao, From PREVIEW To Excel

Posted: Sat Mar 06, 2021 1:59 pm
by nageswaragunupudi
This is a working sample:

Code: Select all | Expand

function AdoReport()

   local oCn, oRs, oRep, oFont

   oCn   := FW_OpenAdoConnection( "xbrtest.mdb" )
   oRs   := FW_OpenRecordSet( oCn, "select * from customer where id <= 5" )

   xbrowser oRs
   oRs:MoveFirst()

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-10
   REPORT oRep PREVIEW FONT oFont ;
      HEADER "CUSTOMER" CENTER ;
      TITLE "Date : " + FW_TRANSFORM( DATE(), "dd-mmmm-yyyy" ) LEFT

   COLUMN TITLE "FIRST"  DATA oRs:Fields( "FIRST"  ):Value SIZE 20
   COLUMN TITLE "CITY"   DATA oRs:Fields( "CITY"   ):Value SIZE 20
   COLUMN TITLE "SALARY" DATA oRs:Fields( "SALARY" ):Value SIZE 20 PICTURE "9,999,999.99" TOTAL RIGHT

   ENDREPORT

   oRep:bInit := { || oRs:MoveFirst() }
   oRep:bSkip := { || oRs:MoveNext() }

   ACTIVATE REPORT oRep WHILE !oRs:Eof()

   oRs:Close()
   oCn:Close()

return nil


Image

Re: Mr. Rao, From PREVIEW To Excel

Posted: Sat Mar 06, 2021 5:01 pm
by Armando
Mr. Rao:

Your sample Works fine but We have a difference between codes, as you can see

My sorce code

Code: Select all | Expand


        COLUMN TITLE "Folio"            DATA ""  SIZE  4 RIGHT   <=== Here is a first one difference
        COLUMN TITLE "Concepto"     DATA "" SIZE 35 LEFT
        COLUMN TITLE "Referencia"   DATA "" SIZE 12 LEFT
        COLUMN TITLE "Importe"      DATA "" SIZE 11 RIGHT
        COLUMN TITLE "Prestamos"    DATA "" SIZE 11 RIGHT




   ACTIVATE REPORT oReporte ;
        ON STARTPAGE Alinea(oReporte,1,2);
        [b]ON CHANGE PonDet(oReporte);[/b]   <======= Here is a second one difference
        ON END (TotFin(oReporte,oBrw),oRsGas:BookMark := nBookMark);
      WHILE ! oRsGas:EOF()
….


STATIC FUNCTION PonDet(oReporte)
    IF cUser <> oRsGas:Fields("GAS_USU"):Value
        IF cUser <> NIL
            TotUser(oReporte,(.F.))
        ENDIF
        oReporte:SAY(1,"Usuario: " + oRsGas:Fields("GAS_USU"):Value,2,RPT_LEFT)
        cUser := oRsGas:Fields("GAS_USU"):Value
        oReporte:EndLine()
    ENDIF

    oReporte:SAY(01,TRANSFORM(oRsGas:Fields("GAS_GAS"):Value,"@Z 9999999"),,RPT_RIGHT)
    oReporte:SAY(02,oRsGas:Fields("GAS_CPT"):Value,,RPT_LEFT)
    oReporte:SAY(03,oRsGas:Fields("GAS_REF"):Value,,RPT_LEFT)
    oReporte:SAY(04,IIF(oRsGas:Fields("GAS_CAN"):Value,"CANCELADO",TRANSFORM(oRsGas:Fields("GAS_IMP"):Value,"@Z 999,999,999.99")),,RPT_RIGHT)
    IF "PRESTAMO" $ oRsGas:Fields("GAS_CPT"):Value
        oReporte:SAY(05,IIF(oRsGas:Fields("GAS_CAN"):Value,"CANCELADO",TRANSFORM(oRsGas:Fields("GAS_IMP"):Value,"@Z 999,999,999.99")),,RPT_RIGHT)
        IF ! oRsGas:Fields("GAS_CAN"):Value
            nTotPus += oRsGas:Fields("GAS_IMP"):Value
            nTotPfi += oRsGas:Fields("GAS_IMP"):Value
        ENDIF
    ENDIF

    IF ! oRsGas:Fields("GAS_CAN"):Value
        nTotUsu += oRsGas:Fields("GAS_IMP"):Value
    ENDIF
RETURN(.T.)
 


With my code does not work

Best Regards

Re: Mr. Rao, From PREVIEW To Excel (SOLVED)

Posted: Sun Mar 07, 2021 12:19 am
by FranciscoA
Armando wrote:Mr. Rao:

Your sample Works fine but We have a difference between codes, as you can see

My sorce code

Code: Select all | Expand


        COLUMN TITLE "Folio"            DATA ""  SIZE  4 RIGHT   <=== Here is a first one difference
        COLUMN TITLE "Concepto"     DATA "" SIZE 35 LEFT
        COLUMN TITLE "Referencia"   DATA "" SIZE 12 LEFT
        COLUMN TITLE "Importe"      DATA "" SIZE 11 RIGHT
        COLUMN TITLE "Prestamos"    DATA "" SIZE 11 RIGHT




   ACTIVATE REPORT oReporte ;
        ON STARTPAGE Alinea(oReporte,1,2);
        [b]ON CHANGE PonDet(oReporte);[/b]   <======= Here is a second one difference
        ON END (TotFin(oReporte,oBrw),oRsGas:BookMark := nBookMark);
      WHILE ! oRsGas:EOF()
….


STATIC FUNCTION PonDet(oReporte)
    IF cUser <> oRsGas:Fields("GAS_USU"):Value
        IF cUser <> NIL
            TotUser(oReporte,(.F.))
        ENDIF
        oReporte:SAY(1,"Usuario: " + oRsGas:Fields("GAS_USU"):Value,2,RPT_LEFT)
        cUser := oRsGas:Fields("GAS_USU"):Value
        oReporte:EndLine()
    ENDIF

    oReporte:SAY(01,TRANSFORM(oRsGas:Fields("GAS_GAS"):Value,"@Z 9999999"),,RPT_RIGHT)
    oReporte:SAY(02,oRsGas:Fields("GAS_CPT"):Value,,RPT_LEFT)
    oReporte:SAY(03,oRsGas:Fields("GAS_REF"):Value,,RPT_LEFT)
    oReporte:SAY(04,IIF(oRsGas:Fields("GAS_CAN"):Value,"CANCELADO",TRANSFORM(oRsGas:Fields("GAS_IMP"):Value,"@Z 999,999,999.99")),,RPT_RIGHT)
    IF "PRESTAMO" $ oRsGas:Fields("GAS_CPT"):Value
        oReporte:SAY(05,IIF(oRsGas:Fields("GAS_CAN"):Value,"CANCELADO",TRANSFORM(oRsGas:Fields("GAS_IMP"):Value,"@Z 999,999,999.99")),,RPT_RIGHT)
        IF ! oRsGas:Fields("GAS_CAN"):Value
            nTotPus += oRsGas:Fields("GAS_IMP"):Value
            nTotPfi += oRsGas:Fields("GAS_IMP"):Value
        ENDIF
    ENDIF

    IF ! oRsGas:Fields("GAS_CAN"):Value
        nTotUsu += oRsGas:Fields("GAS_IMP"):Value
    ENDIF
RETURN(.T.)
 


With my code does not work

Best Regards


With my code does not work


+1
He probado la combinación de tu códicogo con el del siguiente link, con los mismos resultados.

Aquí también solicitan lo mismo:
viewtopic.php?f=6&t=40056&sid=c4f53f57e0f1f2f8b95c99c2b8a24eac#p239044

Yo siempre lo he hecho de la manera en que lo presenta Rao, pero es interesante conocer por qué no exporta los datos a Excel si se usa una función de usuario.
Saludos.

Re: Mr. Rao, From PREVIEW To Excel (SOLVED)

Posted: Sun Mar 07, 2021 12:34 am
by FranciscoA
Este es el codigo que estoy probando:

Code: Select all | Expand

//------------------------------------------//
Function LstEstdCta(oQry, dFechaI,dFechaF,cCta,cNomCta,nRecno,lCtaAcreed)
local oReport, oPrn, oFont1, oFont2, oFont3, oFont4, oPen1, oPen2, nCancelar := 0
local cTitulo := "DETALLE DE LA CTA: "+ alltrim(cCta)+"  "+alltrim(cNomCta)
local  nDebe := 0, nHaber := 0
local cFecha

    cFecha := Fechador(dFechaI,dFechaF)

    nCancelar := PrinterSetup(oPrn)
    if nCancelar = 0
       return nil
    endif

    DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-08
    DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-09 BOLD
    DEFINE FONT oFont3 NAME "ARIAL" SIZE 0,-10 BOLD ITALIC
    DEFINE FONT oFont4 NAME "ARIAL" SIZE 0,-10 BOLD ITALIC
    DEFINE PEN oPen1 WIDTH 1
    DEFINE PEN oPen2 WIDTH 1

    REPORT oReport CAPTION cTitulo PREVIEW ;
        HEADER EMPRESA +"  "+ MEMBRE, "" ,;     //Se usa HEADER como TITLE
               cTitulo ,;
               cFecha CENTER ;
        TITLE  "Fecha: " + DToC(Date()) ,;      //Se usa TITLE como HEADER
               "Hoja No:"+STR(oReport:nPage,3) ;
        FONT   oFont1,oFont2,oFont3,oFont4 ;
        PEN    oPen1,oPen2

        COLUMN TITLE "Fecha"     DATA "" SIZE 10
        COLUMN TITLE "Dcto No."  DATA "" SIZE 10
        COLUMN TITLE "Concepto"  DATA "" SIZE 48
        COLUMN TITLE "Debitos"   DATA "" SIZE 12
        COLUMN TITLE "Creditos"  DATA "" SIZE 12
        COLUMN TITLE "Saldo"     DATA "" SIZE 12
    END REPORT

    IF oReport:lCreated
       oReport:SetTxtColor(CLR_BLACK,1)    
       oReport:SetTxtColor(CLR_HRED,2)
       oReport:SetTxtColor(CLR_HRED,3)
       oReport:SetTxtColor(CLR_GREEN,4)
       oReport:SetPenColor(CLR_HBLUE)
       oReport:SetShdColor(CLR_YELLOW)

       oReport:oHeader:aFont[1] := {|| 3 }  
       oReport:oHeader:aFont[3] := {|| 4 }  
       oReport:oHeader:aFont[4] := {|| 4 }  

       oReport:oTitle:aPad[1] := RPT_LEFT     //fecha
       oReport:oTitle:aPad[2] := RPT_RIGHT    //pag

       oReport:nTopMargin     := 300
       oReport:nDnMargin      := 300

       oReport:bInit := {|| oQry:GoTop() }
       oReport:bSkip := {|| oQry:Skip() }  

       oReport:bEndPage := {|| if(!oReport:lFinish, ( oReport:nRow += 32, oReport:TotalLine(oReport:nGroupLine, 1) ),) }

       AEval(oReport:aColumns,{|oCol| oCol:nAlignTitle := RPT_CENTER })
    ENDIF

    ACTIVATE REPORT oReport ;  
        ON CHANGE LnDatos(oReport, oQry, @nDebe ,@nHaber) ;
        ON END LnGranTot(oReport, nDebe, nHaber) ;
        WHILE !oQry:Eof()  

    RELEASE oFont1,oFont2,oFont3,oFont4,oPen1,oPen2

RETURN(.T.)

//------------------------------------------//
Function LnDatos(oReport, oQry, nDebe, nHaber)
   oReport:Say(  1, oQry:FECHEMIS, 1, 1 )
   oReport:Say(  2, oQry:NUMDOC, 1, 1 )
   oReport:Say(  3, Substr(oQry:CONCEPTO,1,48), 1, 1 )
   oReport:Say(  4, Transform( oQry:DEBE, "9,999,999,999.99" ), 1, 2 )
   oReport:Say(  5, Transform( oQry:HABER,"9,999,999,999.99" ), 1, 2 )
   oReport:Say(  6, Transform( oQry:SALDO,"9,999,999,999.99" ), 1, 2 )
   nDebe  += oQry:DEBE
   nHaber += oQry:HABER
Return nil
//------------------------------------------//
Function LnGranTot(oReport, nDebe, nHaber)
   oReport:NewLine()
   oReport:TotalLine(oReport:nGroupLine, 1)    //lin sencilla

   oReport:Say(  3, "Total Debitos y Creditos", 1, 2 )
   oReport:Say(  4, Transform( nDEBE, "9,999,999,999.99" ), 1, 2 )
   oReport:Say(  5, Transform( nHABER,"9,999,999,999.99" ), 1, 2 )

   oReport:NewLine()
   oReport:TotalLine(oReport:nTotalLine, 1)    //lin doble
Return nil


Saludos.