Page 1 of 1

Usp de STAR DOC

Posted: Thu Dec 19, 2013 1:12 am
by joposadas
Grupo,

¿Alguien tiene un ejemplo de como se usa STAR DOC..END DOC, ya que estoy haciendo pruebas, pero no obtengo resultado que deseo, es decir, tengo un PRG donde tengo los cabeceros de las impresiones
algo asi como esto
PROCEDURE PrintHeader(PnNumHead)
DO CASE
START PRINTDOC
START PRINTPAGE
CASE PnNumHead == 0001
... imprime el encabezado con los titulos para ese reporte en especial
END PRINTPAGE
END PRINTDOC
ENDCASE
RETURN

Y en el codigo que imprime el detalle tengo:

START PRINTDOC
START PRINTPAGE
DO WHILE !emp->(EOF())


IF plinea = 0
PrintHead(0001)
ENDIF
... imprime los detalle
ENDDO
END PRINTPAGE
END PRINTDOC


Mucho agradecer si alguien me envia un ejemplo para entenderlo y poderlo aplicar , de antemano muchas gracias por la ayuda.



Pero no he logrado que me imprima el cabecero

Re: Usp de STAR DOC

Posted: Thu Dec 19, 2013 2:23 am
by danielmaximiliano
Hola Jorge :

este ejemplo a sido sacado de C:\hmg.3.2\samples\Controls\PRINTEAN13\demo.prg

Code: Select all

SELECT PRINTER DEFAULT PREVIEW ;
			ORIENTATION	PRINTER_ORIENT_PORTRAIT ;
			PAPERSIZE	PRINTER_PAPER_A4 ;
			QUALITY		PRINTER_RES_MEDIUM
	
	START PRINTDOC name 	'TEST ' 
	START PRINTPAGE

	// left margin
	nOffset := 10
	nModuleWidth := 0.33
	nBeginRow := 20
	nEndRow := 40
	
	@ nEndRow+2, nOffset print cKodEAN13 ;
					FONT "ARIAL CE" ;
					SIZE 11 ;
					COLOR BLACK

	lWhiteStrip := .f.

	for i:=1 to len(cPreparedEAN13)
		nStripWidth := val( substr(cPreparedEAN13,i,1) )
		if lWhiteStrip
			//@ nBeginRow, nOffset print rectangle to nEndRow, nOffset + nModuleWidth*nStripWidth penwidth 0.1 color WHITE
		else
			//print black strip
			@ nBeginRow, nOffset print rectangle to nEndRow, nOffset + nModuleWidth*nStripWidth penwidth 0.01 color BLACK FILLED
		endif
		
		//switch colors		
		lWhiteStrip := !lWhiteStrip
		
		nOffset += nModuleWidth*nStripWidth
	next i

		
	END PRINTPAGE
	END PRINTDOC

Re: Usp de STAR DOC

Posted: Thu Dec 19, 2013 3:02 am
by Javier Tovar
Hola joposadas

Yo también he empezado a practicar lo de la impresión y me estoy guiando con la ayuda que esta en el IDE-AYUDA-REFERENCIA DE HMG-Print System, ahí he encontrado lo necesario para empezar, todavía no tengo una aplicación completa, estoy en la etapa de acierto-error. Espero que también te sirva.

Saludos.

Re: Usp de STAR DOC

Posted: Thu Dec 19, 2013 4:29 pm
by joposadas
Max,

Gracias pero eso no me sirve, yo ya he logrado imprimir el detalle o el encabezado, PERO no he logrado hacer que me imprima el encabezado y luego el detalle y después al cambio de hoja imprima de buevo el encabezado y continue con el detalle y así sucesivamente hasta el fin del archivo.

Uos la version HMG3.0.46 y en los ejemplo que he visto no he encontrado lo que necesito, por esta razón recurro al forum.


Gracis de nuevo por tu comentario.

Re: Usp de STAR DOC

Posted: Thu Dec 19, 2013 4:37 pm
by danielmaximiliano
Hola de nuevo Jorge :

si te fijas el Referencia de HMG : file:///C:/hmg.3.2/doc/data/index.htm
veras que es simple

Code: Select all

SELECT PRINTER <cPrinter> | DEFAULT 
START PRINTDOC [ NAME <cPrintJobName> ]
START PRINTPAGE
PRINT DATA 
END PRINTPAGE 
START PRINTPAGE
PRINT DATA 
......
......todas las paginas que necesitas, 
.......
END PRINTDOC 

Simple...

Re: Usp de STAR DOC

Posted: Thu Dec 19, 2013 4:51 pm
by Javier Tovar
Hola joposadas

Bueno ya sabiendo tu inquietud, se me ocurre que debes de llevar una variable que te vaya contando el número de detalles que llevas ya impresos. Pues bien si en tu página llevas 20 y esos son todos los que caben en tu hoja y haces tu salto de pagina, entonces la variable la regresar a := 0, entonces pones un IF nVariable=0 entonces imprime el encabezado y después el detalle... No lo he hecho, pero como te digo estoy empezando a practicar.
Espero te sirva.

Saludos.

Re: Usp de STAR DOC

Posted: Thu Dec 19, 2013 5:16 pm
by martingz
Jorge yo ,lo que hago en tu caso es

plinea:=1
START PRINTDOC
START PRINTPAGE
Hearder(1)
DO WHILE !emp->(EOF())
... imprime los detalle
IF plinea <=50
PLINEA++
ELSE
END PRINTPAGE
START PRINTPAGE
PLINEA:=1
Header(1)
ENDIF
ENDDO
END PRINTPAGE
END PRINTDOC

function header
DO CASE
CASE PnNumHead = 1
... imprime el encabezado con los titulos para ese reporte en especial
CASE PnNumHead = 2
... imprime el encabezado con los titulos para ese reporte en especial
ENDCASE
return Nil

Re: Usp de STAR DOC

Posted: Thu Dec 26, 2013 3:14 pm
by joposadas
Martingz

Muchas gracias por tú sugerencia, lo hice y me funcionó tal y como lo necesitaba, ahora a podré completas todos los reportes que me hacen falta de nuevo muchas gracias,

Re: Usp de STAR DOC

Posted: Thu Dec 26, 2013 6:37 pm
by JALMAG
joposadas wrote:Martingz

Muchas gracias por tú sugerencia, lo hice y me funcionó tal y como lo necesitaba, ahora a podré completas todos los reportes que me hacen falta de nuevo muchas gracias,
Hola, en Minigui extended (carpeta BASIC incluso en ADVANCED) tienes ejemplos de lo que necesitas.