cgomez wrote:Buenas Tardes a todos, tengo un problema con los totales de los grupos en el Report, yo hago un salto de página por grupo, el total de la primera pagina me sale bien, pero la de las siguientes me sale acumulado, es decir, si el total de la primera pagina es 12 y de la segunda es 30 el total de la segunda me sale 42 la suma de la primera y la segunda y asi consecutivamente. El código para el salto de pagina es el siguiente:
static function Mirasipagina(oPrint,o)
if o:PaginaPor $ "Ss"
oPrint:EndPage()
oPrint:nGroupLine:=RPT_NOLINE
oPrint:lPageTotal:=.t.
end if
return
GRACIAS
Aqui tienes un ejemplo completo. Ajustalo a tus necesidades.
//-------------------------------------------------------------------------
FUNCTION ImpMaeRep(dfecha,opcion)
LOCAL oFont1, oFont2, oFont3, oPen1, oPen2, oReport, oPrn
local nTotAcum:=0
Maeprodt->(dbgotop())
While Maeprodt->(!eof())
nTotAcum+=Maeprodt->Costo_tot
MaeProdt->(dbskip())
Enddo
SysRefresh()
DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-09
DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-10
DEFINE FONT oFont3 NAME "ARIAL" SIZE 0,-10 //BOLD
DEFINE PEN oPen1 WIDTH 1
DEFINE PEN oPen2 WIDTH 1
DBGOTOP()
PrnSetSize( 2100, 2790 )
PrinterSetup(oPrn)
REPORT oReport;
TITLE EMPRESA, MEMBRE +" - "+SUCURSAL,;
"REPORTE DE INVENTARIO"+FECHADOR(dFecha),;
opcion,;
"" ;
FONT oFont1,;
oFont2,;
oFont3 ;
PEN oPen1,;
oPen2 ;
HEADER OemtoAnsi("Pag: ")+str(oReport:nPage,3) RIGHT ;
FOOTER " ", " ", " ", " ";
PREVIEW
if UPPER(opcion)="ORDENADO POR MODELOS"
GROUP ON MAEPRODT->MODELO FOOTER "TOTAL MODELO"
endif
COLUMN TITLE "No. DE PARTE";
DATA MAEPRODT->CODIGO;
SIZE 16;
TOTAL;
GRID 2
COLUMN TITLE " DESCRIPCION";
DATA SUBSTR(MAEPRODT->DESCRIP,1,35);
SIZE 34;
GRID 2
COLUMN TITLE "MODELO ";
DATA MAEPRODT->MODELO;
SIZE 10;
GRID 2
COLUMN TITLE "EXISTENCIA" ;
DATA MAEPRODT->EXISTENCIA;
PICTURE "@Z 99,999.99";
SIZE 9;
GRID 2
COLUMN TITLE "COSTO UNIT";
DATA MAEPRODT->COSTOU;
PICTURE "@Z 999,999.9999";
SIZE 9;
GRID 2
COLUMN TITLE "COSTO TOTAL";
DATA MAEPRODT->COSTO_TOT;
PICTURE "@Z 99,999,999.99";
SIZE 10;
TOTAL;
GRID 2
END REPORT
IF oReport:lCreated
//Lineas Bold o No
oReport:oTitle:aFont[1] := {|| 3 }
oReport:oTitle:aFont[2] := {|| 3 }
oReport:oTitle:aFont[3] := {|| 3 }
oReport:oTitle:aFont[4] := {|| 3 }
oReport:nTitleUpLine := RPT_SINGLELINE
oReport:nTitleDnLine := RPT_SINGLELINE
oReport:nTotalLine := RPT_SINGLELINE
//Solo imprimir el total de Pagina actual, no el acumulado
oReport:bStartPag:={|| oReport:aColumns[6]:ntotal:=0 }
//Imprimir el gran total en la ultima pagina
oReport:bPostEnd:={|| oReport:Say(1,"VALOR TOTAL DE INVENTARIO",2), oReport:Say(6,transform(nTotAcum,"999,999,999.99"),2) }
oReport:cPageTotal := "TOTAL DE ESTA PAGINA..."
oReport:cGrandTotal := "TOTAL DE ESTA PAGINA..."
ENDIF
ACTIVATE REPORT oReport ;
ON STARTGROUP oReport:NewLine();
ON STARTPAGE StartPag(oReport)
oFont1:End()
oFont2:End()
oFont3:End()
oPen1:End()
oPen2:End()
RETURN NIL
Espero te sirva de algo.
Saludos.
Francisco Alegría P.