Ayuda enviar reporte a Excel

Ayuda enviar reporte a Excel

Postby EBM » Mon Mar 01, 2021 5: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: Select all  Expand view
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.
 
EBM
 
Posts: 147
Joined: Tue Oct 11, 2005 8:22 pm
Location: Guadalajara, Jal Mexico

Re: Ayuda enviar reporte a Excel

Postby EBM » Mon Mar 01, 2021 5: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
EBM
 
Posts: 147
Joined: Tue Oct 11, 2005 8:22 pm
Location: Guadalajara, Jal Mexico

Re: Ayuda enviar reporte a Excel

Postby FranciscoA » Mon Mar 01, 2021 9:09 pm

Hola. Ya intestaste con esto?:
Code: Select all  Expand view
       oReport:bSkip := {|| oQry:Skip() }
        oReport:bInit := {|| oQry:Gotop() }
 

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda enviar reporte a Excel

Postby EBM » Mon Mar 01, 2021 9: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
EBM
 
Posts: 147
Joined: Tue Oct 11, 2005 8:22 pm
Location: Guadalajara, Jal Mexico

Re: Ayuda enviar reporte a Excel

Postby FranciscoA » Mon Mar 01, 2021 9: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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda enviar reporte a Excel

Postby EBM » Tue Mar 02, 2021 1: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
EBM
 
Posts: 147
Joined: Tue Oct 11, 2005 8:22 pm
Location: Guadalajara, Jal Mexico

Re: Ayuda enviar reporte a Excel

Postby FranciscoA » Tue Mar 02, 2021 7:20 pm

Eduardo.
Gracias por compartir tus experiencias.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda enviar reporte a Excel

Postby FranciscoA » Sun Mar 07, 2021 10:09 pm

Eduardo.
Intenta cambiando todos los oReport:Say... a oReport:aColumns[n]:aData := ...
Por ejemplo:
Code: Select all  Expand view
oReporte:Say(  4, Transform( oQuery:FieldGet( "IMPORTE" ),"999,999" ),1, 2 )
 

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

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda enviar reporte a Excel

Postby nageswaragunupudi » Mon Mar 08, 2021 8:08 am

Please see my working sample in this thread.
viewtopic.php?f=3&t=40063

Please do not leave DATA blank.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Ayuda enviar reporte a Excel

Postby EBM » Mon Mar 08, 2021 7: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
EBM
 
Posts: 147
Joined: Tue Oct 11, 2005 8:22 pm
Location: Guadalajara, Jal Mexico


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 82 guests