AYUDA CON TREPORT
Posted: Sun Mar 15, 2009 1:08 pm
by FranciscoA
Hola, amigos del foro. ¿Alguien podría facilitarme un pequeño ejemplo con TReport utilizando GRUPOS y SUB-GRUPOS?
¿Es posible?
Gracias de antemano.
Re: AYUDA CON TREPORT
Posted: Thu Mar 26, 2009 8:30 am
by alfonso
Hola Francisco,
El ejemplo es un bastante antiguo pero puede ser de referencia, si necesitas más dimelo.
//----------------------------------------------------------------------------//
Function lisficha(rad,para)
STATIC oReport
LOCAL oFont1, oFont2
if valtype(para) == 'C'
IF VAL(PARA) = 0
IF !MsgYesNo("Ha seleccionado el total del Club, ; Desea Continuar ?", ;
"Seleccione, Por Favor")
RETURN NIL
ENDIF
ENDIF
ELSE
IF PARA = 0
IF !MsgYesNo("Ha seleccionado el total del Club, ; Desea Continuar ?", ;
"Seleccione, Por Favor")
RETURN NIL
ENDIF
ENDIF
ENDIF
DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10 ITALIC
DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-20 BOLD ITALIC
USE FILATEMO ALIAS FILATEMO INDEX FILATEMO NEW
SELECT FILATEMO
IF RAD = 1 .AND. VAL(PARA) != 0
SET RELATION TO FILATEMO -> FILAMAT INTO CLIENTES
COPY TO TEMPORAL.DBF FOR (CLIENTES -> CODIGO = PARA)
CLOSE FILATEMO
USE TEMPORAL ALIAS FILATEMO NEW
ENDIF
IF RAD = 2 .AND. PARA != 0
COPY TO TEMPORAL.DBF FOR (FILATEMO -> FILAMAT = PARA)
CLOSE FILATEMO
USE TEMPORAL ALIAS FILATEMO NEW
ENDIF
USE DEPEN ALIAS DEPENDE INDEX DEPEN NEW
SELECT CLIENTES
SET RELATION TO CLIENTES->CODIGO INTO DEPENDE
USE TABLAFIL ALIAS TABLAFIL INDEX TABLAFIL NEW
SELECT FILATEMO
SET RELATION TO filatemo->filacod INTO tablafil, ;
TO filatemo->filamat INTO clientes ADDITIVE
DBGOTOP()
IF CPREVIO = 'S'
REPORT oReport ;
FONT oFont1,oFont2;
HEADER " "," "," ", ;
SPACE(30)+"*** FICHA DE REGISTRO DE SOCIOS ***", ;
" "," "," "," ", ;
"DEPENDENCIA... "+CLIENTES->CODIGO+' - '+DEPENDE->DEPEN ,;
"N. MATRICULA.. "+STR(CLIENTES->NUMATRI), ;
"NOMBRE........ "+CLIENTES->NOMBRE, ;
"APELLIDOS..... "+OemToAnsi(CLIENTES->APELLIDOS), ;
"DOMICILIO..... "+CLIENTES->DOMICILIO, ;
"MUNICIPIO..... "+CLIENTES->MUNICIPIO, ;
"PROVINCIA..... "+CLIENTES->PROVINCIA+ ;
" D.P.: "+STR(CLIENTES->DISPOST), ;
"SITUACION..... "+CLIENTES->ESTADO, ;
"FECHA DE ALTA. "+DTOC(CLIENTES->FECHALTA), ;
" "," "," " ;
FOOTER OemToAnsi('Club Filat‚lico de Tabacalera, S.A.') ;
CENTER ;
CAPTION "Fichas de Socios" ;
PREVIEW
ELSE
REPORT oReport ;
FONT oFont1,oFont2;
HEADER " "," "," ", ;
SPACE(30)+"*** FICHA DE REGISTRO DE SOCIOS ***", ;
" "," "," "," ", ;
"DEPENDENCIA... "+CLIENTES->CODIGO+' - '+DEPENDE->DEPEN ,;
"N. MATRICULA.. "+STR(CLIENTES->NUMATRI), ;
"NOMBRE........ "+CLIENTES->NOMBRE, ;
"APELLIDOS..... "+CLIENTES->APELLIDOS, ;
"DOMICILIO..... "+CLIENTES->DOMICILIO, ;
"MUNICIPIO..... "+CLIENTES->MUNICIPIO, ;
"PROVINCIA..... "+CLIENTES->PROVINCIA+ ;
" D.P.: "+STR(CLIENTES->DISPOST), ;
"SITUACION..... "+CLIENTES->ESTADO, ;
"FECHA DE ALTA. "+DTOC(CLIENTES->FECHALTA), ;
" "," "," " ;
FOOTER OemToAnsi('Club Filat‚lico de Tabacalera, S.A.') ;
CENTER ;
CAPTION "Fichas de Socios"
ENDIF
COLUMN TITLE "COD." ;
DATA (filatemo->filacod)
COLUMN TITLE "PRODUCTOS SOLICITADOS" ;
DATA OemToAnsi(tablafil->denomina)
COLUMN TITLE "CANTIDAD" ;
DATA EDINUM(filatemo->filacan,"999,999")
IF RAD > 0 .AND. RAD < 3
GROUP ON FILATEMO->FILAMAT ;
FOOTER "" ;
EJECT
ENDIF
oReport:nGroupLine := RPT_NOLINE // no imprime linea separadora
// oReport:oHeader:aFont[3] := { || 2 }
END REPORT
ACTIVATE REPORT oReport ;
ON STARTPAGE (LinBox(oReport,1.3,1.3,.6,.5), ;
Bitmaps(oReport,.3,.3,1,1))
CLOSE FILATEMO
CLOSE TABLAFIL
CLOSE DEPENDE
oFont1:End()
oFont2:End()
RETURN NIL
//----------------------------------------------------------------------------//
Saludos,
Alfonso
Re: AYUDA CON TREPORT
Posted: Thu Mar 26, 2009 2:10 pm
by FranciscoA
Hola Alfonso. Muchas gracias por tu ejemplo. Aunque no es precisamente lo que necesitaba, me sirvió para otras ideas que tengo en reportes. Ya lo habia solucionado asi:
GROUP ON alltrim(str(FIELD->CODIGO))+" "+alltrim(field->CLIENTE) FOOTER "TOTAL CLIENTE " ;
HEADER oReport:aGroups[1]:cValue FONT 2 ;
EJECT
if lGrupos
GROUP ON FIELD->grupo ; //SUB AGRUPADO POR FAMILIA O GRUPO
HEADER oReport:aGroups[2]:cValue ;
FOOTER "Total "+oReport:aGroups[2]:cValue FONT 1
endif
Saludos.