FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Imprimir reporte desde Array
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Imprimir reporte desde Array
Posted: Tue Aug 28, 2007 06:10 PM

Saludos de nuevo colegas de foro: :)

Esta vez para molestarlos con lo siguiente, resulta que necesito imprimir un reporte tipo columnas con existencia, costos y total de productos existentes en cada almacen de trabajo. :?

http://img204.imageshack.us/my.php?image=reportedz8.jpg

Ya lo he intentado con TPrinter, TDosPrn, pero no permite la impresion en Lanscape, y si lo hago con texto comprimido pues tampoco queda porque lo hago desde un array de X cantidad de almacenes, :x necesito hacerlo con TReport ya que tambien tengo que incluir un logo y en landscape

La forma más facil de hacerlo es con TReport porque se ajusta la horientacion de la pagina dependiendo si el reporte es demasiado largo, hasta donde lo he intentado la cuestion es que no tengo ni pizca idea de como generar y vizualizar el reporte desde array, lo intente con el metodo aColumns, pero no encuentro documentación de como usarlo..

Agradesco de ante mano cualquier ayuda que me puedan brindar..

I.S.C. Víctor Daniel Cuatécatl León

Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 270
Joined: Fri Nov 11, 2005 07:39 PM
Imprimir reporte desde Array
Posted: Tue Aug 28, 2007 09:43 PM
Hola Victor:

Yo lo hago asi, y funciona perfecto:

Donde aDatos, es el array con las columnas a imprimir:


// --------------------------------------------------------------------- 
FUNCTION Imprime_Rep100( aDatos )
// --------------------------------------------------------------------- 

	Local oFont		:= Array( 3 )
	Local oReport   := NIL
  	Local nI  	 	:= 0
    Local nField 	:= 1
	
  	DEFINE FONT oFont[1] NAME "ARIAL" SIZE 0, -12 BOLD   
  	DEFINE FONT oFont[2] NAME "ARIAL" SIZE 0, -9         
  	DEFINE FONT oFont[3] NAME "ARIAL" SIZE 0, -10 BOLD   

	PrinterSetup()
	
    REPORT oReport TITLE "ARTICULOS POR BODEGAS al " + DTOC( Date() )   ;
	FONT oFont[1], oFont[2] , oFont[3]		  ;
	PREVIEW 				;
    CAPTION "ARTICULOS EN LAS BODEGAS "  ;
	FOOTER "Pág: " + Padl( oReport:nPage , 4 ,'0' ) ;
	CENTERED	
	
    COLUMN TITLE "BODEGA" 			DATA aDatos[ nField ,1 ]   SIZE 10 FONT 2 LEFT
    COLUMN TITLE "CODIGO" 			DATA aDatos[ nField ,2 ]   SIZE 15 FONT 2 LEFT
    COLUMN TITLE "ARTICULO"			DATA aDatos[ nField ,3 ]   SIZE 30 FONT 2 LEFT
    COLUMN TITLE "CANTIDAD"	    	DATA aDatos[ nField ,4 ]   SIZE 15 FONT 2 RIGHT  PICTURE "@E 999,999,999.99"
 

  	END REPORT
	
  	oReport:CellView()            

	oReport:aColumns[2]:bTitleFont := { || 3         }
    oReport:bSkip                  := { || nField++  }
	
    ACTIVATE REPORT oReport  WHILE nField <= LEN( aDatos )  

    oFont:= NIL

RETURN NIL


Saludos ,
Juan
==> Pasando a FWH16.04 + Harbour32 + BCC70 + PellesC
=> Abandonando FWH 13.7 + xHarbour + BCC582
http://www.mitaller.cl
Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
Imprimir reporte desde Array
Posted: Tue Aug 28, 2007 10:15 PM

Es super facil......

Tienes el ejemplo en la carpeta \FWxx\samples\report.

Básicamente la cosa funciona asi:

Defines una variable que va a ser tu "contador" registros, como lo puso Juan en su ejemplo anterior:

nField := 1

Luego defines todas tus columnas como elementos del array:

COLUMN DATA Campo[nField, 1] Title "columna 1"
COLUMN DATA Campo[nField, 2] TITLE "columna 2"
....
...
...

La gracia del invento consiste en conocer las DATAS del objeto reporte controlan tanto el flujo de datos, como el salto entre registros, para ello tendrás que retocar 2 cosilla:

ACTIVATE REPORT oRep WHILE nField <= LEN(Campo)

Lo cual ejecutara el reporte mientras tu contador sea menor o igual a lo que mida tu array

y lo mas importante, el control de salto de registro esta dado por un bloque de código:

oRep:bSkip

Este bloque de codigo por default tiene un {|| dbskip() }, lo unico que tienes que hacer cambiar el bloque de salto por uno que salte arrays en vez de saltar registros de campos, en este caso:

oRep:bSkip := {|| nField++}

Y listo, eso es todo.

Como te dije, tienes el ejemplo en la carpeta SAMPLES de tu instalación original de FiveWin.

Saludos

R.F.
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Imprimir reporte desde Array
Posted: Wed Aug 29, 2007 12:42 AM
RF:
jcaro:

Gracias por sus respuestas, reviso los ejemplos y con los datos que me acaban de mencionar ya tengo una idea mas clara para poder generar mi reporte, mis agradecimientos a los dos y espero mañana comentar que paso y poner una captura de pantalla para que vean como quedo..

:-) Saludos desde Chiapas..
:-)
www.sisa.unlugar.com
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Imprimir reporte desde Array
Posted: Thu Aug 30, 2007 05:00 PM

Ok Colegas del foro:

Ya quedo solucionado el problema de impresion de reportes, lo hize por medio de columnas de la siguiente manera:

REPORT oReporte TITLE "REPORTE GLOBAL DE EXISTENCIAS DE INVENTARIO"  PREVIEW;    
     CAPTION "Existencias por Almacen"

FOR N:= 1 TO FCOUNT()

oReporte:AddColumn( TrColumn():New( { TituCol( cDBF, N, 08 ) },,{ ContCol( cDBF, N, .F. ) },,,,,,,,,, oReporte ) )

oReporte:AddColumn( TrColumn():New( { TituCol( cDBF, Z, 4 ) },,{ ContCol( cDBF, Z, .F. ) },,,,,,,,,, oReporte ) )

oReporte:AddColumn( TrColumn():New( { TituCol( cDBF, N, 3 ) },,{ ContCol( cDBF, N, .F. ) },,,,,,,,,, oReporte ) )

next

END REPORT

ACTIVATE REPORT oReporte ON STARTPAGE BitMaps(oReporte)

y esta es la imagen de como quedo: :shock:

http://img407.imageshack.us/my.php?image=reportexg6.jpg

Saludos.. :D

:lol:

Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon

Continue the discussion