Page 1 of 1

Error al imprimir

Posted: Sun May 17, 2020 2:30 pm
by jorge.posadas
HGM

Después de no hacer funcionar la impresión en PDF, decidí irme por otra ruta.
El código siguiente es el que actualmente estoy usando para SIMULAR la impresión de un reporte de notas de venta, aclaro que, por el momento, no estoy usando archivo de lectura, simplemente en DO WHILE para con contador de lineas.
El problema es que;
1- Me imprime la primera pagina en blanco
2. A partir de la segunda página ya me muestra datos
3. La última hoja no imprime el encabezado, pero si el detalle

Notarán que :
1- nicio con START PRINTDOC seguido de START PRINTPAGE
2- En la funcion Imprime_Encabezado() ahi es donde se imprime el encabezado
3- En el DO WHILE si Gn_Num_Page = 0 o Ln_Renglon >= 270 y si me funciona, es decir me imprime el encabezado en cada hoje MENOS en la última página

Y he dado muchas vueltas y no logro hacer que me imprima en forma correcta.

De antemano agradezco mucho la ayuda para esto y las anteriores preguntas


*-----------------------------------------------------------------------------------------------*
PROCEDURE PDF_Nota_Venta
*-----------------------------------------------------------------------------------------------*
PRIVATE Lb_Success
Gs_Titulo_Reporte := ""
Ln_Contador := Gn_Num_Pagina := 0
Ln_Maximo_Contador := 780
Ln_Renglon := 60
PAPERSIZE PRINTER_PAPER_LETTER
START PRINTDOC NAME Ls_Nombre_Reporte
START PRINTPAGE
DO WHILE Ln_Contador <= Ln_Maximo_Contador
IF Gn_Num_Pagina = 0 .OR. Ln_Renglon >= 270
Imprime_Encabezado()
END PRINTPAGE
START PRINTPAGE
Ln_Renglon := 60
ENDIF
@ Ln_Renglon,015 PRINT str(Ln_Renglon)
@ Ln_Renglon,030 PRINT str(Ln_Contador)
@ Ln_Renglon,060 PRINT str(Gn_Num_Pagina)
Ln_Renglon += 5
Ln_Contador++
ENDDO
END PRINTPAGE
END PRINTDOC
GClearMsg()
ENDIF

// Abro el recien creado
Execute File Ls_Nombre_Reporte
RETURN


*-----------------------------------------------------------------------------------------------*
PROCEDURE Imprime_Encabezado()
*-----------------------------------------------------------------------------------------------*
// Obtengo datos de la empresa
IF .NOT. GLoadMyData()
ELSE
MsgInfo("Problemas al leer datos de la empresa")
RETURN
ENDIF
Gn_Num_Pagina++
//@ 005,005 PRINT RECTANGLE TO 292, 206 PENWIDTH 1 ROUNDED CURVE 1
//@ 007,007 PRINT RECTANGLE TO 290, 204 ROUNDED CURVE 1
//START PRINTPAGE
@ 010,105 PRINT GsMyRazonSocial SIZE 14 BOLD CENTER
@ 016,105 PRINT GsMyCalle + " " + GsMyColonia SIZE 11 CENTER
@ 021,105 PRINT GsMyNombreCiudad + ", " + GsMyNombreEstado + " " + GsMyCodigoPostal SIZE 10 CENTER
@ 021,190 PRINT "Pág."+ALLTRIM(STR(Gn_Num_Pagina)) SIZE 10
@ 026,105 PRINT "Tel. "+TRANSFORM(GsMyTelefono,"99 9999 9999") + " EMail " + GsMyEmail SIZE 10 CENTER
@ 033,010 PRINT LINE TO 033, 200 PENWIDTH 0.1

@ 035,105 PRINT Gs_Nombre_Cliente SIZE 12 BOLD CENTER
@ 041,105 PRINT Gs_Titulo_Reporte SIZE 10 CENTER
@ 047,010 PRINT LINE TO 047, 200 PENWIDTH 0.5
DO CASE
CASE Gn_Num_Encabezado == 1
@ 052,020 PRINT "SERIE" SIZE 8
@ 052,055 PRINT "FECHA DE VENTA" SIZE 8
@ 052,100 PRINT "NUMERO DE NOTA" SIZE 8
@ 052,155 PRINT "IMPORTE DE LA VENTA" SIZE 8
@ 056,010 PRINT LINE TO 056, 200 PENWIDTH 0.3
ENDCASE
//END PRINTPAGE
RETURN

Re: Error al imprimir

Posted: Sun May 17, 2020 5:22 pm
by franco
What is Imprime_Encabezado ()
you have a END PrintPage START PrintPage after it. This may cause empty page.
check .... @ 016,105 PRINT GsMyStreet + "+ 11 CENTER
I like to use .... Ln_Renglon := Ln_Renglon + 5 .. Easier to read for me .. instead of Ln_Renglon + = 5
? .. @ 052,100 NOTE SIZE 8
Franco

Re: Error al imprimir

Posted: Sun May 17, 2020 5:50 pm
by andyglezl
Hola Jorge

Ya revisaste este post para ver si te sirve ?
*------------------------------------------------------
Hello Jorge

You already checked this post to see if it works for you ?


https://www.hmgforum.com/viewtopic.php? ... 734#p61734


P.D.

Una sugerencia, trata de poner tu código entre etiquetas para que
sea mas fácil de entender.
*----------------------------------------------------------------------------------
A suggestion, try to put your code between labels so that
be easier to understand.

code.png
code.png (110.24 KiB) Viewed 1652 times

Re: Error al imprimir

Posted: Sun May 17, 2020 10:02 pm
by jorge.posadas
Grupo,
Después de paciencia ya logré que imprima en forma correcta mi reporte. les copio el código
PROCEDURE Imprime_Notas_Ventas
PAPERSIZE PRINTER_PAPER_LETTER
START PRINTDOC NAME Ls_Nombre_Reporte
START PRINTPAGE
Imprime_Encabezado()
DO WHILE Ln_Contador <= Ln_Maximo_Contador
// Un máximo de 43 lineas por pagina, si pasa de esa cantidad entonces se crea una página (considerando que Ln_Renglon va de 5 en 5)
IF Ln_Renglon >= Gn_Maximo_Lineas_Reporte
END PRINTPAGE
START PRINTPAGE
Imprime_Encabezado()
Ln_Renglon := 55
ENDIF
// Aqui se imprimira el detalle de la tabla o del recordset
@ Ln_Renglon,015 PRINT STR(Ln_Renglon)
@ Ln_Renglon,030 PRINT STR(Ln_Contador)
@ Ln_Renglon,060 PRINT STR(Gn_Num_Pagina)
// Suma 5 al contador de al renglón.
Ln_Renglon += 5
Ln_Contador++
ENDDO
// Estoy lo puse ya que si habia mas de un registro se imprima el encabezado de la última página
IF Ln_Renglon > 55
Imprime_Encabezado()
ENDIF
END PRINTPAGE
END PRINTDOC
GClearMsg()
ENDIF
RETURN

Igualmente , con esa lógica pude crear un PDF, sin embargo el titulo de PÁG. xxx el acento no lo pone, pero ya eso lo veré mas adelante. Yo siempre guardo mis PRG en formato UTF-8,

Agradezco las sugerencias que me enviaron, aprendí de ellas también (ah por cierto yo no usp DBF, uso SQLite)