FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Algo especial con TReport
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Algo especial con TReport
Posted: Sat May 19, 2007 08:02 PM

Saludos a todo el foro:

Veran, tengo un fichero que contiene campos del mes y campos acumulados al mes, por ejemplo VENTAS DEL MES y ACUMULADO DE VENTAS AL MES, necesito crear un reporte usando la clase TReport donde primero se impriman los campos del mes (VENTAS DEL MES) y posteriormente saltar de página y ahora imprimir los campos del acumulado (ACUMULADO DE VENTAS), quedaría algo como esto

El fichero esta asĂ­
SUCURSAL VTS. MES VTS. ACUMULADAS
NORTE 1450354.54 130480354.54
SUR 950324.87 10950324.87
ESTE 25548.10 3025548.10
OESTE 790578.00 2790578.00

Y el reporte serĂ­a asĂ­:

                                    Página 1

======= ==============
SUCURSAL VENTAS DEL MES
======= ==============
NORTE $ 1,450,354.54
SUR $ 950,324.87
ESTE $ 25,548.10
OESTE $ 790,578.00

                                    Página 2

======= ===============
SUCURSAL VENTAS ACUMULADAS
======= ===============
NORTE $ 130,480,354.54
SUR $10,950,324.87
ESTE $3,025,548.10
OESTE $ 2,790,578.00

Recuerden que ambos campos (Ventas del mes y las ventas acumuladas) vienen en un solo registro lo que me obliga a leer dos veces el mismo fichero, primero para imprimir las ventas del mes y despues para imprimir las ventas acumuladas.

Ojala me haya explicado.

Alguna idea ?

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: 215
Joined: Fri Feb 02, 2007 03:38 PM
estaria mejor con Tprinter
Posted: Sun May 20, 2007 05:09 PM

Armando;

Te resultaria mejor usar la clase Tprinter con oPrn:CmSay, con dos bucles o do while !eof(). uno para el mes y otro para el acumulado,

algo asi como :

PRINT oPrn preview

SELECT A
USE MIBASE
INDEX ON (MICAMPO) TO (MI_INIDCE)

SELECT A
DO WHILE !EOF()
PAGE
oPrn:CmSay( 1,1,"SUCURSAL " ,ofont)
oPrn:CmSay( 1,5,"VENTAS DEL MES " ,ofont)
mSuc = MIBASE->SUCURSAL
mLinea = 3
DO WHILE MIBASE->SUCURSAL = mSuc
oPrn:CmSay(mLinea,1,+mSuc,oFont)
oPrn:CmSay(mLinea,2,+transform(MIBASE->ventas del mes,oFont)
skip
enddo
mLinea = mLInea + 0.5 (separacion entre registros)
enddo
los totales aqui
endpage

select a
y aqui repites el mismo procedimiento para el acumulado, antes del endprint

Ojala te de alguna idea

Ramon Paredes
Managua, Nicaragua

... Desde la Tierra de lagos y Volcanes......
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Algo especial con TReport
Posted: Mon May 21, 2007 12:35 PM

Hola,
se me imagina que podrias utilizar GRUPOS y en el ON START GROUP o en alguno de los bloques que se ejecutan cuando hay cambio de grupo, regresar al registro inicial y claro guardar datos y banderas para que no quede en un ciclo infinito.

Otra solucion, pasarlo todo a un array y todo lineal

solo son ideas

saludos

Marcelo

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Algo especial con TReport
Posted: Mon May 21, 2007 04:57 PM

Gracias RamĂłn, Gracias Marcelo:

Todoas las ideas y sugerencia son bien recibidas, voy a esperar un poco a ver si alguien más del foro se anima a dar su comentario.

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

Continue the discussion