Report no hace bPostEnd

Report no hace bPostEnd

Postby Pedro » Sun Sep 26, 2010 10:45 am

Aqui tengo un nuevo fantasma, en el código que sigue, un report, antes de hacer el bPostEnd, sale el error 6 deleted enhanced metafile y no me genera el final del report
¿Alguien sabe por qué?

Code: Select all  Expand view  RUN

*-------------------------------------------------------------------------------
Function ImprDiaEmit(cAlias,aTextos,aIva,aBases)
*-------------------------------------------------------------------------------
LOCAL oFont1, oFont2, oPen1, oPen2
Local oReport
Local nSele := SELECT()

     DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10
     DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-9
     
     DEFINE PEN oPen1 WIDTH 2 COLOR CLR_HGREEN
     DEFINE PEN oPen2 WIDTH 1 COLOR CLR_HMAGENTA
     
     dbSelectArea(cAlias)      
     (cAlias)->(dbGotop())
     PrinterSetup()
     
     REPORT oReport TITLE  aTextos[1],"",aTextos[2],"" ;
          FONT   oFont1, oFont2 ;
          PEN    oPen1, oPen2 ;
          HEADER "Fecha: "+dtoc(date()),"","Página:"+Str(oReport:nPage,3) RIGHT ;
          PREVIEW
         
          COLUMN TITLE "FACTURA" ;
          DATA (cAlias)->NUMERO ;
          PICTURE "999,999";
          FONT 2  ;
          GRID 2        
         
          COLUMN TITLE "FECHA" ;
          DATA Dtoc((cAlias)->FECHA) ;
          FONT 2  ;
          GRID 2            
         
          COLUMN TITLE "CLIENTE" ;
          DATA (cAlias)->NOMBRE ;
          FONT 2  ;
          GRID 2    

          COLUMN TITLE "CIF / NIF" ;
          DATA (cAlias)->CIFNIF ;
          FONT 2  ;
          GRID 2    
         
          COLUMN TITLE "TIPO IVA" ;
          DATA Str(aIva[(cAlias)->iva,1])+" + "+Str(aIva[(cAlias)->iva,2]) ;
          FONT 2  ;
          GRID 2                
                 
          COLUMN TITLE "NETO     " ;
          DATA (cAlias)->BRUTO - ((cAlias)->IMPDTO + (cAlias)->IMPCENTR + (cAlias)->IMPRAPPEL + (cAlias)->IMPPTOPAGO);
          PICTURE "999,999.99";
          TOTAL;              
          FONT 2  ;
          GRID 2
         
          COLUMN TITLE "CUOTA IVA" ;
          DATA (cAlias)->CUOTA ;
          TOTAL ;
          PICTURE "99,999.99";
          FONT 2  ;
          GRID 2          
         
          COLUMN TITLE "RECGO IVA" ;
          DATA (cAlias)->RECARGO;
          TOTAL ;
          PICTURE "99,999.99";
          FONT 2  ;
          GRID 2          
         
          COLUMN TITLE "TOTAL     " ;
          DATA (cAlias)->total;
          PICTURE "999,999.99";
          TOTAL ;              
          FONT 2  ;
          GRID 2  
                         
  END REPORT
 
  oReport:bPostEnd :={|| DatosFin( oReport, aBases ) }
 
  ACTIVATE REPORT oReport
     oFont1:End()
     oFont2:End()
     
     oPen1:End()
     oPen2:End()
     
 RETURN NIL
*-------------------------------------------------------------------------------        
Function DatosFin(oReport,aBases)
*-------------------------------------------------------------------------------
    oReport:lGrid  := .f.

    oReport:NewLine()
    If oReport:NeedNewPage()
       oReport:StartPage()
    EndIF
    oReport:lGrid  := .f.
    If aBases[1] <> 0
       oReport:Say(5,"Base Imponible al 16 %"+"   "+Transform(aBases[1],"999,999.99"))
       oReport:NewLine()
    EndIf

    If aBases[2] <> 0
       oReport:Say(5,"Base Imponible al 4 %"+"   "+Transform(aBases[2],"999,999.99"))
       oReport:NewLine()
    EndIf

    If aBases[3] <> 0
       oReport:Say(5,"Base Imponible al 7 %"+"   "+Transform(aBases[3],"999,999.99"))
       oReport:NewLine()
    EndIf

    If aBases[4] <> 0
       oReport:Say(5,"Base Imponible al 1 %"+"   "+Transform(aBases[4],"999,999.99"))
       oReport:NewLine()
    EndIf

    If aBases[5] <> 0
       oReport:Say(5,"Base Imponible al 4 %"+"   "+Transform(aBases[5],"999,999.99"))
       oReport:NewLine()
    EndIf

    If aBases[6] <> 0
       oReport:Say(5,"Base Imponible al 0,5 %"+"   "+Transform(aBases[6],"999,999.99"))
       oReport:NewLine()
    EndIf          

    If aBases[7] <> 0
       oReport:Say(5,"Base Imponible exenta"+"   "+Transform(aBases[7],"999,999.99"))
    EndIf

Return nil
 
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Report no hace bPostEnd

Postby FranciscoA » Sun Sep 26, 2010 1:30 pm

Pedro, prueba asi.

END REPORT

If oReport:lCreated
oReport:bPostEnd :={|| DatosFin( oReport, aBases ) }
Endif

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

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

Re: Report no hace bPostEnd

Postby Pedro » Sun Sep 26, 2010 3:37 pm

No funciona, Francisco, el error continua y no pone el pie que va en el bPostend.
Lo curioso es que sale el dialogo de creación de las páginas con el botón previsualizar y el error se minimiza en la barra de tareas, hasta que no pulsas el botón previsualizar no se ve, a continuación pulsas aceptar, del error, y sale el preview del reporte, pero sin el pie.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Report no hace bPostEnd

Postby FranciscoA » Sun Sep 26, 2010 7:37 pm

Pedro:
Reconstruí tu ejemplo (exactamente igual) y aquí trabaja perfectamente. (Creado con FWH712).
¿Estás utilizando un rpreview modificado?

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

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

Re: Report no hace bPostEnd

Postby Pedro » Sun Sep 26, 2010 8:02 pm

No, Francisco, la única modificación que tiene mi rpreview es el tema de las mdichild que no deja ver el dialogo del reporte
por lo demás está tal cual, mi versión de FWh es la 9.04, y no he tenido problemas con ningún reporte hasta ahora con este.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Report no hace bPostEnd

Postby FranciscoA » Sun Sep 26, 2010 9:11 pm

Pedro, parece que en realidad tienes un fantasma ahí.

Había probado con pocas lineas (menos de 1 hoja) y no hay problemas. Al intentar con 150 y pico de registros (varias pag), si presenta el problema que mencionas... pero... he aquí el fantasma (je-je-je). Con impresoras de tinta da el problema, pero al probarla con la matricial Epson lq-1080 que tengo instalada, sí funciona!!! ¿Cómo la ves desde ahí?

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

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

Re: Report no hace bPostEnd

Postby derpipu » Mon Sep 27, 2010 1:29 am

Hola, yo tengo el mismo problema y es imprimiendo con una impresora Laser, entonces aqui la posibilidad es que sea por el tamaño de la hoja o por como se calcula el fin de la hoja, dependiendo de la impresora...

Sigo buscando la solucion...

Saludos
Luis Fernando Rubio Rubio
derpipu
 
Posts: 94
Joined: Tue Mar 28, 2006 4:09 pm
Location: Tequila, Jalisco Mexico

Re: Report no hace bPostEnd

Postby Pedro » Mon Sep 27, 2010 7:17 am

Pues debe ser eso, ya que siempre uso impresoras láser, tanto en la oficina del cliente como en casa.
Como dices debe ser un fantasma, ya que este cliente en concreto, tiene cinco programas, cada uno con sus reportes, y generan varias páginas y no sucede.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Report no hace bPostEnd

Postby Pedro » Mon Sep 27, 2010 11:33 am

sigo haciendo pruebas y ahora veo que si el final del reporte es el final de página, salta el error, pero si el final no es final de página y hay hueco para el pie, lo pone sin dar error alguno
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Report no hace bPostEnd

Postby Pedro » Mon Sep 27, 2010 2:35 pm

Pues si, he hecho varias pruebas, y en el mismo rango que me da el error si añado registros, a ese rango, y logro que en la ultima pagina haya al menos un registro, el error no se produce, el report sale perfecto y el bpostend se pinta sin problemas.
Por tanto el error se produce sólo cuando no queda margen suficiente para poner el bpostend, la clase report no controla
este tema.
A ver si Antonio o Daniel nos iluminan en el tema.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Report no hace bPostEnd

Postby FranciscoA » Mon Sep 27, 2010 2:45 pm

Pedro, aquí está la solución. Hice este ejemplo, adaptalo a tus necesidades:

//------------------
Function main()
local cAlias
local aTextos:={"Texto numero uno","Texto Numero dos"}
local aBases:={16,4,7,1,4,.05,0}
local aConcep:={"Base Imponible al 16 %",;
"Base Imponible al 4 %",;
"Base Imponible al 7 %",;
"Base Imponible al 1 %",;
"Base Imponible al 4 %",;
"Base Imponible al 0,5 %",;
"Base Imponible exenta"}

local aIva:={1,5}

DBUSEAREA(.T.,,"PEDRO","PEDRO",.F.)
DBSELECTAREA("PEDRO")
cAlias:=Alias()

ImprDiaEmit(cAlias,aTextos,aIva,aBases,aConcep)

dbcloseall()
return nil

*-------------------------------------------------------------------------------
Function ImprDiaEmit(cAlias,aTextos,aIva,aBases,aConcep)
*-------------------------------------------------------------------------------
LOCAL oFont1, oFont2, oPen1, oPen2
Local oReport
Local nSele := SELECT()


DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10
DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-9

DEFINE PEN oPen1 WIDTH 2 COLOR CLR_HGREEN
DEFINE PEN oPen2 WIDTH 1 COLOR CLR_HMAGENTA

dbSelectArea(cAlias)
(cAlias)->(dbGotop())
PrinterSetup()

REPORT oReport TITLE aTextos[1],"",aTextos[2],"" ;
FONT oFont1, oFont2 ;
PEN oPen1, oPen2 ;
HEADER "Fecha: "+dtoc(date()),"","Página:"+Str(oReport:nPage,3) RIGHT ;
PREVIEW

COLUMN TITLE "FACTURA" ;
DATA (cAlias)->NUMERO ;
PICTURE "999,999";
FONT 2 ;
GRID 2

COLUMN TITLE "FECHA" ;
DATA Dtoc((cAlias)->FECHA) ;
FONT 2 ;
GRID 2

COLUMN TITLE "CLIENTE" ;
DATA (cAlias)->NOMBRE ;
FONT 2 ;
GRID 2

COLUMN TITLE "CIF / NIF" ;
DATA (cAlias)->CIFNIF ;
FONT 2 ;
GRID 2


COLUMN TITLE "TIPO IVA" ;
DATA Str(aIva[(cAlias)->iva,1])+" + "+Str(aIva[(cAlias)->iva,2]) ;
FONT 2 ;
GRID 2


COLUMN TITLE "NETO " ;
DATA (cAlias)->BRUTO - ((cAlias)->IMPDTO + (cAlias)->IMPCENTR + (cAlias)->IMPRAPPEL + (cAlias)->IMPPTOPAGO);
PICTURE "999,999.99";
TOTAL;
FONT 2 ;
GRID 2

COLUMN TITLE "CUOTA IVA" ;
DATA (cAlias)->CUOTA ;
TOTAL ;
PICTURE "99,999.99";
FONT 2 ;
GRID 2

COLUMN TITLE "RECGO IVA" ;
DATA (cAlias)->RECARGO;
TOTAL ;
PICTURE "99,999.99";
FONT 2 ;
GRID 2

COLUMN TITLE "TOTAL " ;
DATA (cAlias)->total;
PICTURE "999,999.99";
TOTAL ;
FONT 2 ;
GRID 2

END REPORT

if oReport:lCreated
oReport:bPostEnd :={|| DatosFin( oReport, aBases,aConcep ) }
endif

ACTIVATE REPORT oReport
oFont1:End()
oFont2:End()

oPen1:End()
oPen2:End()

RETURN NIL
*-------------------------------------------------------------------------------
Function DatosFin(oReport,aBases,aConcep)
*-------------------------------------------------------------------------------
local n
oReport:lGrid := .f.
oReport:lFinish := .f.

for n:=1 to len(aBases)
oReport:NewLine()
If oReport:NeedNewPage()
oReport:StartPage()
Endif

oReport:Say(5, aConcep[n] +" "+Transform(aBases[n],"999,999.99"))
next
oReport:lFinish := .t.
return nil


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

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

Re: Report no hace bPostEnd

Postby Pedro » Mon Sep 27, 2010 3:23 pm

Francisco, haz una prueba, en la base de ejemplo que tienes, genera 42 registros que son los que tengan que salir en el reporte
y cuéntame que te sale al final, por que a mi me sale la última página, con las filas del pie montadas una encima de otra.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Report no hace bPostEnd

Postby Armando » Tue Sep 28, 2010 12:27 am

Pedro:

Efectivamente el problema se presenta cuando se rebasa el fin de la página
hay toda una enorme hebra del problema aquí en el foro.

El problema que debería solucionarse con las líneas que has puesto simplemente no se
soluciona

Code: Select all  Expand view  RUN

   If oReport:NeedNewPage()
       oReport:StartPage()
    EndIF
 


Intenta la siguiente función:

Code: Select all  Expand view  RUN

FUNCTION OverFlow(oReporte)
IF (oReporte:nRow() + oReporte:nStdLineHeight()) >= oReporte:nBottomRow()
    oReporte:EndPage()
    oReporte:StartPage()
ENDIF
RETURN(.T.)
 


Y la mandas llamar antes de pintar la primera línea de tu función DatosFin()

La puse en una función externa para poder llamarla cuando me sea necesario.

Y nos contarás como te va.

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: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Report no hace bPostEnd

Postby FranciscoA » Tue Sep 28, 2010 1:46 pm

Pedro, intentalo así:

*-------------------------------------------------------------------------------
Function DatosFin(oReport,aBases,aConcep)
*-------------------------------------------------------------------------------
local n

oReport:lGrid := .f.

CkNewPage(oReport) //chequear si necesita nueva pagina
oReport:NewLine() //espacio de una linea
CkNewPage(oReport) //volver a chequear si necesita nueva pagina

for n:=1 to len(aBases)
oReport:StartLine()
oReport:Say( 5, aConcep[n]+" "+Transfor(aBases[n],"9,999,999.99") )
oReport:EndLine()
CkNewPage(oReport) //despues de cada item, chequear si necesita nueva pagina (pueden se muchos)
next
return nil
//------------------------------//
Function CkNewPage(oReport)
if (oReport:nRow() + oReport:nStdLineHeight()) >= oReport:nBottomRow() //clase Treport
oReport:EndPage()
oReport:StartPage()
endif
return nil

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

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

Re: Report no hace bPostEnd

Postby Pedro » Tue Sep 28, 2010 3:51 pm

Gracias Francisco, funcionó perfecto
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 55 guests