FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Total en los grupos
Posts: 16
Joined: Mon Feb 18, 2008 06:27 PM
Total en los grupos
Posted: Tue Dec 02, 2008 05:40 PM

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

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Total en los grupos
Posted: Tue Dec 02, 2008 05:53 PM

CGOMEZ:

Por el poquito c贸digo que muestras deduzco que estas haciendo los cortes de grupo "a pie" y por lo tanto t煤 debes controlar los acumulados.

Por que no dejas que la TReport haga el trabajo utilizando la facilidad de hacer grupos que te da la clase TReport ?.

Si persistes en hacer los cortes "a pie" debes poner a ceros la variable donde guardas el acumulado, suponiendo que la variable se llama nTotAcu debes agregar este c贸digo:

nTotAcu := 0.00

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
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Total en los grupos
Posted: Tue Dec 02, 2008 06:06 PM
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:aFont[1] := {|| 3 }
oReport:aFont[2] := {|| 3 }
oReport:aFont[3] := {|| 3 }
oReport: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]:=0 }

//Imprimir el gran total en la ultima pagina
oReport:={|| 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.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 16
Joined: Mon Feb 18, 2008 06:27 PM
Total en los grupos
Posted: Tue Dec 02, 2008 06:13 PM

Muchas Gracias, lo he solucionado a帽adiendo esta linea al codigo que tenia.

oPrint:aColumns[6]:ntotal:=0.00

CARMEN G脫MEZ

Continue the discussion