FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda con TReport
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Ayuda con TReport
Posted: Thu Feb 18, 2010 10:21 PM

Amigos del foro, a ver si pueden ayudarme a solucionar esto: (PROBLEMA CON EL TITLE DEL REPORTE)
Tengo una dbf que listo con TReport utilizando Grupos y ejectando (EJECT) por cada grupo. El TITLE del reporte por cada grupo contiene algunos datos de la dbf. Ahora bien, si determinado grupo contiene más de 1 página, y si el total del grupo cabe en la última página, todo va muy bien. Pero... si por casualidad la última página del grupo se llena completamente con los datos y el total del grupo pasa como único dato, a la siguiente pag, los datos del TITLE no son mantenidos y son llenados con datos del siguiente grupo. ¿Cómo puedo resolver esto? He tratado por muuuuuchas horas, sin conseguirlo.
Apreciaré su ayuda. Saludos
Francisco.

Este es el código del reporte:

Function ImpAdelanto(aGets, aTit)
LOCAL oPrn, oFont,oFont1,oFont2, oPen1, oReport
local cFirmas:="Elaborado por: "+GetPvProfStr("config","Firma1","",cIniFile);
+space(50)+"Revisado por: "+GetPvProfStr("config","Firma2","",cIniFile);
+space(50)+"Administ General: "+GetPvProfStr("config","Firma3","",cIniFile)
local cDueno

local nImporte:=0
local nIR:=Val(GetPvProfStr("config","RetencIR","2",cIniFile))
local nAlc:=Val(GetPvProfStr("config","RetencAlc","1",cIniFile))
local nCoop:=Val(GetPvProfStr("config","RetencCoop","5",cIniFile))

LOCAL bCabez, cCodiCabez, cPlacaCabez, cTotCabez //Febrero 2010

Equipos->(dbSetOrder(1)) //codigo

bCabez:={|| Equipos->(dbSeek((cWorker3)->CodiCabez)) ,;
cDueno:=Equipos->Propiet ,;
cCodiCabez:=(cWorker3)->CodiCabez, cPlacaCabez:=Equipos->PlacaCabez}
Eval(bCabez)

PrinterSetup(oPrn)
DEFINE FONT oFont NAME "ARIAL" SIZE 0,-08
DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10
DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-08 BOLD
DEFINE PEN oPen1 WIDTH 1        //grid 1   (espesor lineas marco)


 REPORT oReport ;
       TITLE aTit ,;
             "CODIGO UNIDAD: " +cCODICABEZ+" "+"PLACA UNIDAD"+" "+cPlacacabez,; 
             "Planilla del "+dtoc(aGets[1]),;
            "RECIBIMOS DEL SR(A).: " +alltrim(upper(cDueno)) + ",  LA CANTIDAD DE:  " ,;  
            "SE PAGA CONFORME ACUERDOS ENTRE CONDUCTORES, AYUDANTES Y DUEÑOS, INCLUYENDO TODAS SUS PRESTACIONES SOCIALES",;
            "(VACACIONES, TRECEAVO MES, HORAS EXTRAS Y OTROS), SEGUN DETALLE DE REMISIONES." ; 
      FONT   oFont,oFont1,oFont2;
      PEN    oPen1;
      HEADER dtoc(DATE())+"    Pag: "+str(oReport:nPage,3)+"          " RIGHT ;
      FOOTER " "," ",cFirmas," "," " CENTERED;
      CAPTION "AdelTransp" ;
      PREVIEW

 GROUP ON FIELD->CODICABEZ ;
       HEADER "";
       FOOTER "TOTALES:"  FONT 3  EJECT

 COLUMN TITLE "Remision " ;
      DATA FIELD->NumRemisio ;
      SIZE 8 
 COLUMN TITLE "VALOR  " ;             
      DATA IF(  FIELD->NUEVE<>0, FIELD->IMPORTE, FIELD->VALORVIAJE-( FIELD->nueve+ FIELD->COMISION + FIELD->GRATIFIC);
       -( (((FIELD->VALORVIAJE-(FIELD->COMISION + FIELD->GRATIFIC))*nIR)/100) ;
         +(((FIELD->VALORVIAJE-(FIELD->COMISION + FIELD->GRATIFIC))*nAlc)/100) ;
         +(((FIELD->VALORVIAJE-(FIELD->COMISION + FIELD->GRATIFIC))*nCoop)/100))  ) ;       
      PICTURE "@Z 999,999.99" ;
      FONT 3 ;
      TOTAL ; 
      SIZE 9
 COLUMN TITLE "CODIGO Y NOMBRE CONDUCTOR" ;
      DATA field->CHOFER ;
      SIZE 30
 COLUMN TITLE "DEVENGAD" ;
      DATA Field->DevengChof ;
      PICTURE "@Z 999,999.99" ;
      TOTAL ; 
      SIZE 8
 COLUMN TITLE " FIRMA CONDUCTOR" ;
      DATA repli("_",26) ;
      CENTERED;
      SIZE 23
 COLUMN TITLE "CODIGO Y NOMBRE AYUDANTE" ;
      DATA field->AYUDANTE;
      SIZE 30
 COLUMN TITLE "DEVENGAD" ;
      DATA Field->DevengAyud ;
      PICTURE "@Z 999,999.99" ;
      TOTAL ; 
      SIZE 8
 COLUMN TITLE " FIRMA AYUDANTE" ;
      DATA repli("_",26) ;
      CENTERED;
      SIZE 23
 END REPORT

 IF oReport:lCreated
   //Bold para lineas 1,2 del titulo
      oReport:oTitle:aFont[1] := {|| 2 }
      oReport:oTitle:aFont[2] := {|| 2 }
 ENDIF

 ACTIVATE REPORT oReport ;
          ON STARTGROUP ( oReport:NewLine() );  
          ON ENDGROUP ( oReport:nPage:=0, Eval(bCabez));
          ON END oReport:lTotal:=.f. ;  //No imprimir el gran total en la ultima pagina
          ON ENDPAGE oReport:lPageTotal:=.f.  //No imprimir el acum en cada pagina

 oFont:End()
 oFont1:End()
 oFont2:End()
 oPen1:End()

RETURN NIL

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Ayuda con TReport
Posted: Tue Mar 02, 2010 03:45 PM

¿Nadie?

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: Ayuda con TReport
Posted: Tue Mar 02, 2010 04:06 PM

Francisco,

justamente despues de cada skip sobre la DB se verifica los grupos, y claro haces skip, cambias de grupo y el puntero del registro de la DBF ya esta en el siguiente registro por ende en el otro grupo y ya esta con la informacion del nuevo grupo.

Solucion, creo que podrias tu definir el bskip del reporte y alli almacenar la informacion de los grupos para pasarlo a los titulos,
algo asi oReport:bskip := {|| informaciongrupo := dbf -> informacion, dbf -> ( DBSKIP() ) }, entonces informaciongrupo es lo que va al titulo, ademas, deberas inicializar informaciongrupo := dbf -> informacion al inicio del reporte para el primer titulo

espero sea de ayuda

saludos

Marcelo

Continue the discussion