FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda enviar reporte a Excel
Posts: 147
Joined: Tue Oct 11, 2005 08:22 PM
Ayuda enviar reporte a Excel
Posted: Mon Mar 01, 2021 05:36 PM
Compañeros buen dia,

Estoy queriendo habilitar el envío de reportes a Excel pero no logro hacerlo, ya pude habilitar el boton de excel con oReport:bInit := { || .T. }
sin embargo solo me envia el encabezado del reporte sin los datos y en algunos me genera un error (6) deleting enhanced metafile y solo me envia a excel el encabezado, alguna idea de que podré estar haciendo mal?

Saludos

Eduardo Borondón Muñiz


Code (fw): Select all Collapse
REPORT   oReporte                                                                                  ;
TITLE    "Reporte de compras del dia: " + Fec( dDesde ) + " al dia: " + Fec( dHasta ),             ;
         "Fecha: " + Fec( Date() ) + "     Hora: " + Time()                                        ;
HEADER   oPublic:oEmpresa:cNombre  CENTER                                                          ;
FOOTER   "Página: " + Str(oReporte:nPage,3) CENTER                                                 ;
FONT     oFont                                                                                     ;
CAPTION  "Reporte de compras"                                                                      ;
PREVIEW

COLUMN TITLE  "Fecha"                                                                              ;
       SIZE   10                                                                                   ;
       CENTER                                                                                      ;
       DATA   " "

COLUMN TITLE  "Vendedor"                                                                           ;
       SIZE   40                                                                                   ;
       CENTER                                                                                      ;
       DATA   " "

COLUMN TITLE  "Oro"                                                                                ;
       SIZE   10                                                                                   ;
       CENTER                                                                                      ;
       DATA   " "

COLUMN TITLE  "Plata"                                                                              ;
       SIZE   10                                                                                   ;
       CENTER                                                                                      ;
       DATA   " "

COLUMN TITLE  "Entregado"                                                                          ;
       SIZE   10                                                                                   ;
       CENTER                                                                                      ;
       DATA   " "

ENDREPORT

oReporte:nSeparator := 10

oReporte:bInit := { || .T. } 

ACTIVATE REPORT oReporte                                                                           ;
         WHILE  ( RCompras2( dDesde, dHasta, oReporte ) )                                          ;
         ON STARTPAGE PrintLogoRep( oReporte )

oFont := NIL

Return NIL

///////////////////////////////////////////////////////////////////////////////////////////////////////////
STATIC FUNCTION RCompras2( dDesde, dHasta, oReporte )
LOCAL oQuery, cConsulta, nOro, nPlata

nOro := nPlata := 0

cConsulta := "SELECT FECHA, IMPORTE, TIPO, VENDEDOR, FEC_ENTREGA  "                           +     ;
             "FROM compras "                                                                  +     ;
             "WHERE FECHA >= '" + DtoS( dDesde ) + "' AND FECHA <= '" + DtoS( dHasta ) + "' " +     ;
             "AND DELETED = 'N' "                                                             +     ;
             "ORDER BY FECHA, TIPO"

oQuery    := oPublic:oMySql:Query( cConsulta )

If oQuery:nRecCount > 0
   Do While !oQuery:Eof()
      oReporte:StartLine()
      oReporte:Say(  1, Fec( oQuery:FieldGet( "FECHA" ) ), 1, 1 )
      oReporte:Say(  2, oQuery:FieldGet( "VENDEDOR" ), 1, 1 )

      If oQuery:FieldGet( "TIPO" ) == 1 // oro
         oReporte:Say(  3, Transform( oQuery:FieldGet( "IMPORTE" ),"999,999" ),1, 2 )
         nOro   += oQuery:FieldGet( "IMPORTE" )
       else
         oReporte:Say(  4, Transform( oQuery:FieldGet( "IMPORTE" ),"999,999" ),1, 2 )
         nPlata += oQuery:FieldGet( "IMPORTE" )
      EndIf

      oReporte:Say(  5, Fec( oQuery:FieldGet( "FEC_ENTREGA" ) ), 1, 1 )

      oReporte:EndLine()
      oQuery:Skip( 1 )
   EndDo

   oReporte:StartLine()
   oReporte:EndLine()
   oReporte:StartLine()
   oReporte:aColumns[ 3 ]:Separator()
   oReporte:aColumns[ 4 ]:Separator()
   oReporte:EndLine()
   oReporte:StartLine()
   oReporte:Say(  3, Transform( nOro,  "999,999" ),1, 2 )
   oReporte:Say(  4, Transform( nPlata,"999,999" ),1, 2 )
   oReporte:StartLine()
EndIf

oQuery := NIL

Return .F.
Posts: 147
Joined: Tue Oct 11, 2005 08:22 PM
Re: Ayuda enviar reporte a Excel
Posted: Mon Mar 01, 2021 05:42 PM

Se me pasó incluir que tengo FWH 19.05 y que al generar el reporte a PDF me lo hace sin problemas.

Saludos!

Eduardo Borondón Muñiz

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Ayuda enviar reporte a Excel
Posted: Mon Mar 01, 2021 09:09 PM
Hola. Ya intestaste con esto?:
Code (fw): Select all Collapse
        oReport:bSkip := {|| oQry:Skip() }
        oReport:bInit := {|| oQry:Gotop() }

Saludos.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 147
Joined: Tue Oct 11, 2005 08:22 PM
Re: Ayuda enviar reporte a Excel
Posted: Mon Mar 01, 2021 09:26 PM

Hola Francisco,

Gracias por respoder, si ya lo habia intentado asi y es el mismo resultado, creo que el problema viene por como yo hago los reportes que en la clausula WHILE lo desvío hacia otra funcion donde yo controlo cada renglón y cada columna que se genera en el reporte, tomé el codigo del metodo toExcel de la clase Report y estoy creando un metodo propio para ver si logro hacerlo funcionar.

Mil Gracias por tu interés

Eduardo Borondón Muñiz

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Ayuda enviar reporte a Excel
Posted: Mon Mar 01, 2021 09:32 PM
EBM wrote:Hola Francisco,

Gracias por respoder, si ya lo habia intentado asi y es el mismo resultado, creo que el problema viene por como yo hago los reportes que en la clausula WHILE lo desvío hacia otra funcion donde yo controlo cada renglón y cada columna que se genera en el reporte, tomé el codigo del metodo toExcel de la clase Report y estoy creando un metodo propio para ver si logro hacerlo funcionar.

Mil Gracias por tu interés

Eduardo Borondón Muñiz


Por cierto, antes de que escribieras, estaba por preguntarte si se podía saber por qué utilizas una function independiente, si bien lo puedes hacer todo en el oReport.

Saludos.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 147
Joined: Tue Oct 11, 2005 08:22 PM
Re: Ayuda enviar reporte a Excel
Posted: Tue Mar 02, 2021 01:54 PM

Hola Francisco,

Lo hago así por que un gran numero de reportes que genero concentro información de diferentes tablas e incluso bases de datos de empresas diferentes para no tener que estar viendo un reporte y otro, sino en uno solo tengo toda la información que necesito, ademas de poder utilizar diferentes fonts para cada renglon/columna independiente a mi gusto. Ya me acostumbre a hacerlo asi. :roll:

Te muestro un ejemplo de un reporte donde concentro información de 3 empresas diferentes:

http://www.suitesrealmazamitla.mx/files ... _flujo.JPG

No lo hago con la clase printer ya que al hacerlo con Report no me preocupo por calcular anchos de columnas ni de renglones ni de nada. Para mi es mas comodo hacerlo de esa manera.

Saludos y nuevamente gracias!!

Eduardo Borondón Muñiz

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Ayuda enviar reporte a Excel
Posted: Tue Mar 02, 2021 07:20 PM

Eduardo.
Gracias por compartir tus experiencias.
Saludos.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Ayuda enviar reporte a Excel
Posted: Sun Mar 07, 2021 10:09 PM
Eduardo.
Intenta cambiando todos los oReport:Say... a oReport:aColumns[n]:aData := ...
Por ejemplo:
Code (fw): Select all Collapse
oReporte:Say(  4, Transform( oQuery:FieldGet( "IMPORTE" ),"999,999" ),1, 2 )

Cambiarlo por:
Code (fw): Select all Collapse
oReport:aColumns[4]:aData := {{|| Transform( oQuery:FieldGet( "IMPORTE" ),"999,999" ) }}
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Ayuda enviar reporte a Excel
Posted: Mon Mar 08, 2021 08:08 AM

Please see my working sample in this thread.

viewtopic.php?f=3t=40063

Please do not leave DATA blank.

&

Regards



G. N. Rao.

Hyderabad, India
Posts: 147
Joined: Tue Oct 11, 2005 08:22 PM
Re: Ayuda enviar reporte a Excel
Posted: Mon Mar 08, 2021 07:33 PM

Gracias Francisco por la idea, voy a probar como me funciona y te comento.

Gracias Mr Rao, voy a probar si me funciona.

De momento ya lo he solucionado modificando el método ToExcel de la clase Report pero haré las pruebas como me comentan a ver si me funciona.

Gracias por la ayuda.

Saludos!

Eduardo Borondón Muñiz

Continue the discussion