PREVIEW

PREVIEW

Postby Manuel Valdenebro » Thu Nov 05, 2009 9:21 am

Vengo utilizando para los informes el comando REPORT, ya que me resulta mas intuitivo que usar el oReport:=....

Estoy intentado, mediante una opción previa marcada por el usuario, que pueda mostrar el previo o no, pero el comando no admite ninguna variación.

Tambien he intentado con oReport:lScreen:= .T., pero da error.

He leido en el siguiente tema: viewtopic.php?f=20&t=1525&hilit=lscreen
una contestación del maestro Giordano, diciendo que no se puede. Como es una contestación antigua, no sé si posteriormente alguien lo ha logrado.
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: PREVIEW

Postby Frafive » Thu Nov 05, 2009 10:46 am

Manuel, esto te tiene que funcionar

IF ::nDevice == 1 // Vista Previa

PRINT ::oPrn NAME ::cDlgTitle PREVIEW TO ::cPrinter

REPORT ::oReport ;
TITLE " "," ", " " , " "," ", " ", " ", " ",::cTitulo1,::cTitulo2,iif(::cTitulo3!=NIL,::cTitulo3," ") CENTERED;
FONT ::oFont3, ::oFont2, ::oFont1 ;
HEADER ' ', ::cDlgTitle CENTERED ;
FOOTER ' ', "Fecha: "+dtoc(date())+ " Página.: "+str(::oReport:nPage,3) ;
CAPTION oVar:cVersion ;
TO DEVICE ::oPrn

ELSEIF ::nDevice == 2 // Imprimir

REPORT ::oReport ;
TITLE " ",::cTitulo1,::cTitulo2,iif(::cTitulo3!=NIL,::cTitulo3," ") CENTERED;
FONT ::oFont3, ::oFont2, ::oFont1 ;
HEADER ' ', ::cDlgTitle ;
FOOTER ' ', "Fecha: "+dtoc(date())+ " Página.: "+str(::oReport:nPage,3) ;
CAPTION oVar:cVersion


ENDIF
Frafive
 
Posts: 189
Joined: Wed Apr 05, 2006 9:48 pm

Re: PREVIEW

Postby jrestojeda » Thu Nov 05, 2009 12:17 pm

Hola...
Yo lo hagho así.

Code: Select all  Expand view


AntesDeImp(oBrush1,oWnd,@vChkSI,@vChkVP,@IfImp) // Acá modifico los variables vChkSI y vChkVP

IF vChkSI
   GetPrintDc()
ENDIF

IF vChkVP
   REPORT oReport TITLE Titulo CENTER;
          HEADER Empresa,Titulo2 LEFT;
          FOOTER "Fecha:"+DTOC(Date())+" Hora:"+Time()+" Pagina:"+STR(oReport:nPage,3) RIGHT;
          FONT oFont0,oFont1,oFont2,oFont3;
          PREVIEW;
          CAPTION "Vista previa del listado"
ELSE
   REPORT oReport TITLE Titulo CENTER;
          HEADER Empresa,Titulo2 LEFT;
          FOOTER "Fecha:"+DTOC(Date())+" Hora:"+Time()+" Pagina:"+STR(oReport:nPage,3) RIGHT;
          FONT oFont0,oFont1,oFont2,oFont3;
          CAPTION "Vista previa del listado"
ENDIF
 


Code: Select all  Expand view

// PREGUNTO SI SELECCIONA IMPRESORA Y VE VISTA PREVIA Y POR DONDE SALE
Function AntesDeImp(oBrush,oDlg,vChkSI,vChkVP,IfImp)
Local oDlg1,Btn1,Btn2,oGet1,oFont1

oBrush1:=oBrush

DEFINE FONT oFont1 NAME "ROMAN" SIZE 0,-12 BOLD

DEFINE DIALOG oDlg1 RESOURCE "ANTESDEIMP1" OF oDlg ICON "A_ICONO1";
   TRANSPARENT BRUSH oBrush1

   REDEFINE CHECKBOX vChkSI     ID 100 OF oDlg1
   REDEFINE CHECKBOX vChkVP     ID 101 OF oDlg1

   REDEFINE BTNBMP Btn1 ID 200 OF oDlg1 RESOURCE "ACEPTAR22" LEFT;
      ACTION IfImp:=.t., oDlg1:End();
      PROMPT "Aceptar" 2007;
      TOOLTIP "Aceptar" FONT oFont1

   REDEFINE BTNBMP Btn2 ID 201 OF oDlg1 RESOURCE "CANCELAR22" LEFT;
      ACTION IfImp:=.f., oDlg1:End();
      PROMPT "Cancelar" 2007;
      TOOLTIP "Cancelar" FONT oFont1

   Btn1:bGotFocus :={|| Btn1:bClrGrad:=bClrGradGF,Btn1:refresh()}
   Btn1:bLostFocus:={|| Btn1:bClrGrad:=bClrGradLF,Btn1:refresh()}

   Btn2:bGotFocus :={|| Btn2:bClrGrad:=bClrGradGF,Btn2:refresh()}
   Btn2:bLostFocus:={|| Btn2:bClrGrad:=bClrGradLF,Btn2:refresh()}

ACTIVATE DIALOG oDlg1 CENTERED

oFont1:End()

Return nil
//
 


Acá la imagen para que te des una idea:

Image

Espero te sirva.

Saludos, Esteban.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 583
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: PREVIEW

Postby Manuel Valdenebro » Thu Nov 05, 2009 9:31 pm

Muchas gracias a los dos por vuestra ayuda. Actualmente lo tengo planteado de una forma parecida a la que exponeis. Seguramente no me he explicado bien, ya que lo que busco es hacer un solo comando de REPORT (no dos) que sirva para PREVIEW y no PREVIEW y no tener que repetir, dos veces, el mismo código del report, quitando o poniendo, la palabra PREVIEW.

Por ejemplo, modificando el código de Esteban:

   REPORT oReport TITLE Titulo CENTER;
          HEADER Empresa,Titulo2 LEFT;
          FOOTER "Fecha:"+DTOC(Date())+" Hora:"+Time()+" Pagina:"+STR(oReport:nPage,3) RIGHT;
          FONT oFont0,oFont1,oFont2,oFont3;
          IF ( lNoPrevio, , PREVIEW) ;          
CAPTION "Vista previa del listado"


Esto no funciona y oReport:lScreen:=.f. tampoco.
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: PREVIEW

Postby joseluisysturiz » Thu Nov 05, 2009 9:49 pm

???
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: PREVIEW

Postby Armando » Thu Nov 05, 2009 11:14 pm

Manuel:

A ver si entendí bien, primero creas una variable digamos lPreview

Code: Select all  Expand view

IF algo
   lPreview := (.T.)
ELSE
   lPreview := (.F.)
ENDIF

REPORT oReporte CAPTION cTitulo lPreview
 


Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3068
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: PREVIEW

Postby Antonio Linares » Thu Nov 05, 2009 11:42 pm

Manuel,

Yo propondría una pequeña variación del código de Armando, repitiendo solo la primera línea del comando:
Code: Select all  Expand view

if lPreview
   REPORT oRpt ... PREVIEW
else
   REPORT oRpt ...
endif
 

y el resto del código del reporte sin variación
regards, saludos

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

Re: PREVIEW

Postby Manuel Valdenebro » Fri Nov 06, 2009 4:31 am

Antonio Linares wrote:Manuel,

Yo propondría una pequeña variación del código de Armando, repitiendo solo la primera línea del comando:
Code: Select all  Expand view

if lPreview
   REPORT oRpt ... PREVIEW
else
   REPORT oRpt ...
endif
 

y el resto del código del reporte sin variación


Entonces estamos en las mismas.

Asi es como lo tengo actualmente y lo que queria, simplemente, es mejorar el código. Pero por lo que veo, hay que duplicar OBLIGATORIAMENTE el comando REPORT.

Muchas gracias a todos.
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: PREVIEW

Postby Willi Quintana » Fri Nov 06, 2009 12:52 pm

Hola, es solo una idea:
Salu2

Code: Select all  Expand view


If lSipreview
   cPrev := "PREVIEW"
  eLSE
   cPrev := ""
EndIf

REPORT oRpt ... &cPrev

 
User avatar
Willi Quintana
 
Posts: 1002
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: PREVIEW

Postby Manuel Valdenebro » Fri Nov 06, 2009 9:07 pm

Willi Quintana wrote:Hola, es solo una idea:
Salu2

Code: Select all  Expand view


If lSipreview
   cPrev := "PREVIEW"
  eLSE
   cPrev := ""
EndIf

REPORT oRpt ... &cPrev

 


Gracias Willi por contestar. Ya no probé y no funciona. Curiosamente en el fichero ppo. sigue figurando la variable de la siguiente manera:

oReport := &cPrevio := RptBegin({{
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: PREVIEW

Postby Antonio Linares » Fri Nov 06, 2009 11:45 pm

Manuel,

La solución es sencilla: usar el código ya preprocesado
Code: Select all  Expand view

  <oReport> := RptBegin( {<{bTitle}>}, {<{bHead}>}, {<{bFoot}>},;
                {<oFont>}, {<oPen>}, <.lSum.>, <cRptFile>, <cResName>,;
                [<.toPrint.>], <.toScreen.>, <(toFile)>, <oDevice>, <cName>,;
                [UPPER(<(TFmt)>)], [UPPER(<(HFmt)>)], [UPPER(<(FFmt)>)] )
 

Y reemplazar <.toScreen.> con una variable lógica lPreview
regards, saludos

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

Re: PREVIEW

Postby armando.lagunas » Sat Nov 07, 2009 5:43 am

hola espero que te sirva:

el secreto esta en la definición de las impresoras y luego pasarle la definición impresora al report

e aqui el codigo:

el lImp maneja la desición del usuario de ver o no el informe
---------------------------------------------------------
function reporte( lImp )
local oPrn, oRpt

IF lImp ; PRINTER oPrn FROM USER PREVIEW
ELSE ; PRINTER oPrn
ENDIF

REPORT oRpt TITLE ...... < etc >...... TO DEVICE oPrn
...
...
RETURN nil
-------------------------------------------------------
una pregunta y un solo cuerpo del report.

espero que esto te sirva

saludos desde Chile.
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: PREVIEW

Postby Manuel Valdenebro » Sat Nov 07, 2009 6:23 am

Antonio Linares wrote:Manuel,

La solución es sencilla: usar el código ya preprocesado
Code: Select all  Expand view

  <oReport> := RptBegin( {<{bTitle}>}, {<{bHead}>}, {<{bFoot}>},;
                {<oFont>}, {<oPen>}, <.lSum.>, <cRptFile>, <cResName>,;
                [<.toPrint.>], <.toScreen.>, <(toFile)>, <oDevice>, <cName>,;
                [UPPER(<(TFmt)>)], [UPPER(<(HFmt)>)], [UPPER(<(FFmt)>)] )
 

Y reemplazar <.toScreen.> con una variable lógica lPreview


Antonio,

Como decía en el primer mensaje de este hilo "Vengo utilizando para los informes el comando REPORT, ya que me resulta mas intuitivo que usar el oReport:=....".-

Con el código preprocesado funciona, pero es menos comprensible y por eso buscaba una solución con el comando.
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: PREVIEW

Postby Manuel Valdenebro » Sat Nov 07, 2009 6:25 am

armando.lagunas wrote:function reporte( lImp )
local oPrn, oRpt

IF lImp ; PRINTER oPrn FROM USER PREVIEW
ELSE ; PRINTER oPrn
ENDIF

REPORT oRpt TITLE ...... < etc >...... TO DEVICE oPrn
...
...
RETURN nil



Armando, muchas gracias. FUNCIONA PERFECTAMENTE.
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 13 guests