oReport:Say() en REPEXCEL [II]

oReport:Say() en REPEXCEL [II]

Postby jllinas » Tue Apr 01, 2008 1:58 am

Hola, sigo con la misma cosa...

Bueno, definitivamente no hay manera de hacer un reporte con SAY(), para luego volcarlo a Excel (a través del Preview). La unica forma que encontre es declarando una variable, desde el principio, que me indique a la REPEXCEL, que se quiere llevar la salida a Excel. Asi, que las cosas quedan como sigue:

1.- Declarar lExcel := .T.

2.- Crear el reporte como sigue:
Code: Select all  Expand view  RUN
REPORT oReport ;
  TITLE ..... ;
  FONT ..... ;
  PEN ....... ;
  HEADER .....;
  FOOTER .....;
  DEVICE ....

COLUMN .....
COLUMN .....
COLUMN .....
[mas definiciones de columnas]

END REPORT

ACTIVATE REPORT oReport ON INIT SayRpt( oReport )

// ------------
static Function SayRpt( oReport )

wPlsSalida(.T., oReport, lExcel )

oArchivo:GOTOP()
DO WHILE oArchivo:EOF()

     oReport:StartLine()
     oReport:Say(1, oArchivo:Campo1)
     oReport:Say(2, oArchivo:Campo2)
     [Otras columnas a imprimir]
     oReport:EndLine()

     oArchivo:Skip()
ENDDO

wPlsSalida(.F., oReport, lExcel )

RETURN NIL


La funcion wPlsSalida es la siguiente:

Code: Select all  Expand view  RUN
FUNCTION wPlsSalida(lBoxOn, oRpt, lExcel )
IF lBoxOn
   DO CASE
     CASE lExcel
        wPlsWait(.T.,"Generando Archivo Excel.... espere ")
        oRpt:lSalida := .T.
        oRpt:oSalida := TSalXls():New( oRpt, AllTrim( Left( oRpt:cName, 8 ) ) + '.xls' )
        oRpt:oSalida:Stabilize()
        oRpt:oSalida:FormatColumns()
        oRpt:oSalida:StartPage()

   ENDCASE
ELSE
   DO CASE
     CASE lExcel
        wPlsWait( .F. )
        oRpt:oSalida:oXLS:SetDisplay(,,,,.F.,.F.,.T.,.T.,.F.)
        oRpt:oSalida:oXLS:End()

   ENDCASE
ENDIF
RETURN( NIL )


La funcion wPlsWait() es un tipo de WaitOn() WaitOff() que muestra un mensaje por pantalla.

Funciona de maravillas.... PERO: me envia la "cabecera" del reporte a la impresora (OJO: Solo la cabecera, nada mas...), y eso no lo quiero !!! Quisiera que no imprimiera nada.

No se como decirle a la clase que NO IMPRIMA, que solo se enviará a un Libro de Excel !

Pienzo que podría enviarlo a una impresora "nula", pero no se como hacerlo.....

¿Alguien le a metido mano a esto? ¿o soy el único "loco" en la comunidad?

Gracias anticipadas...
Julio Llinás
Visita mi Blog en http://mangucybernetico.blogspot.com/
xHarbour 1.1.0 + FWH810 + Borland 5.5.1
User avatar
jllinas
 
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic

Postby Antonio Linares » Tue Apr 01, 2008 8:39 am

Julio,

Podrías probar a hacer:

REPORT oReport ... PREVIEW

De esa forma solo tendrías que cerrar la ventana del preview.
Tal vez te sirva.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42159
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby jllinas » Tue Apr 01, 2008 11:54 am

Hola Antonio,

Pues la verdad que ya lo había probado, y así sí funciona...

Lo único es que no me parece muy "elegante" que digamos. Solo quiero saber si pueda haber otra opción...

Abrazos,
Julio Llinás
Visita mi Blog en http://mangucybernetico.blogspot.com/
xHarbour 1.1.0 + FWH810 + Borland 5.5.1
User avatar
jllinas
 
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Antonio Linares, Google [Bot] and 54 guests