Error al imprimir
Posted: Sun May 17, 2020 2:30 pm
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
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