Impresión personalizada
Buenos tardes espero me puedas ayudar con esto,: Tengo un formulario en donde elijo el periodo (mes y año en combos) y luego elijo el numero de páginas a imprimir a través de dos spiners (página inicila y final) cuando elijo todas las páginas me sale el reporte correcto y me da la opción para imprimir, pero cuando elijo solo la página 1 si bien es cierto me muestra la página 1 pero al fina de la pagina1 me sale esto y se repite como 20 veces:
-----------------------------------VAN ... 108,299.49 0.00 && Esta linea va al final de cada página y si elijo solo la página 1 debería mostrarme solo una vez pero no se por que se repite como 20 veces. Espero me puedas ayudar solo me falta corregir este inconveniente para terminar el programa.
Esto es el programa:
store 0 to pag,sum_debe,sum_haber,total,cod_doc
STORE .F. TO no_print
cDoc = "h:\ruta\document"
Use (cDoc) SHARED AGAIN
Index On doc_tip TO (cDoc) FOR doc_cla="T"
SELECT * FROM ("h:\ruta\tmpdiario");
INTO CURSOR mv2 ORDER BY tmpdiario.n_asiento
SET RELATION TO ltivo INTO document ADDITIVE
=imprime()
CLOSE TABLES
FUNCTION imprime
STORE 0 TO l, pag, mivs_saldos, mivd_saldos
reporte=SYS(3)+".prn"
SET DEVICE TO FILE &reporte
=titula()
SCAN
IF l > 60
l=l+1
@ l,01 say replicate('-',230)
@ l,176 say "VAN ......."+SPACE(14)+TRANSFORM(sum_debe,'#,###,###.##')+SPACE(6)+TRANSFORM(sum_haber,'#,###,###.##')
=titula1()
ENDIF
l=l+1
IF no_print
LOOP
ENDIF
IF ltivo#cod_doc
=doc()
ENDIF
@ l,06 SAY mv2.n_asiento
@ l,pcol()+7 SAY mv2.fec_ope
@ l,pcol()+3 SAY PADR(mv2.nom_glosa,72)
@ l,pcol()+9 SAY PADR(mv2.cod_libro,2)
@ l,pcol()+23 SAY PADR(mv2.doc_sust,15)
@ l,pcol() say PADR(mv2.cod_cta,10)
@ l,pcol()+1 say PADR(mv2.denom,40)
@ l,pcol()+3 SAY TRANSFORM(mv2.debe,"@KZ 9999,999.99")
@ l,pcol()+8 SAY TRANSFORM(mv2.haber,"@KZ 999,999.99")
sum_debe=sum_debe+debe
sum_haber=sum_haber+haber
ENDSCAN
=t_final()
SET DEVICE TO SCREEN
=view_list(lista)
FUNCTION titula
STORE 0 to l
pag=pag+1
IF BETWEEN(pag,val1,val2)
no_print=.F.
ELSE
STORE 6 TO l
no_print=.T.
RETURN
ENDIF
l=l+3
@ l,100 SAY "LIBRO DIARIO"
l=l+2
@ l,01 SAY "PERIODO :"+cMes+" - "+cAño
l=l+1
@ l,01 SAY "RUC : "
l=l+1
........
......
=l+1
FUNCTION titula1
STORE 0 to l
pag=pag+1
IF BETWEEN(pag,val1,val2)
no_print=.F.
ELSE
STORE 6 TO l
no_print=.T.
RETURN
ENDIF
l=l+3
@ l,100 SAY "LIBRO DIARIO"
l=l+2
@ l,01 SAY "PERIODO"
l=l+1
@ l,01 SAY "RUC : 20223938478"
....
....
l=l+2
@ l,176 SAY "VIENEN ......."+SPACE(11)+TRANSFORM(sum_debe,'#,###,###.##')+SPACE(6)+TRANSFORM(sum_haber,'#,###,###.##')
l=l+1
FUNCTION t_final
saldo_ant_debe=nGSLdAntDebe-sum_debe
saldo_ant_haber=nGSLdAntHaber-sum_haber
l=l+1
IF no_print
RETURN
ENDIF
@ l,01 say replicate ('=',231)
IF cNmes="01"
@ l,176 say 'SALDO TOTAL DIARIO'+SPACE(5)+transform(nGSLdAntDebe,'###,###,###.##')+SPACE(4)+transform(nGSLdAntHaber,'###,###,###.##')+chr(13)+chr(10)
ELSE
@ l,176 say +'SALDO TOTAL DIARIO'+SPACE(5)+transform(sum_debe,'###,###,###.##')+SPACE(4)+transform(sum_haber,'###,###,###.##')+chr(13)+chr(10)
ENDIF
l=l+1
IF cNmes="01"
@ l,176 say ' SALDO ANTERIOR'+space(5)+transform(nGSLdAntDebe-nGSLdAntDebe,'###,###,###.##')+SPACE(4)+transform(nGSLdAntHaber-nGSLdAntHaber,'###,###,###.##')+chr(13)+chr(10)
else
@ l,176 say ' SALDO ANTERIOR'+space(5)+transform(saldo_ant_debe,'###,###,###.##')+SPACE(4)+transform(saldo_ant_haber,'###,###,###.##')+chr(13)+chr(10)
ENDIF
l=l+1
@ l,176 say ' TOTAL GENERAL'+space(5)+transform(nGSLdAntDebe,'###,###,###.##')+SPACE(4)+transform(nGSLdAntHaber,'###,###,###.##')+chr(13)+chr(10)
l=l+1
@ l,01 say replicate ('=',231)
ENDFUNC
**************
FUNCTION doc
**************
cod_doc=ltivo
l=l+1
@ l,60 SAY ALLTRIM(document.doc_des)
l=l+2
-----------------------------------VAN ... 108,299.49 0.00 && Esta linea va al final de cada página y si elijo solo la página 1 debería mostrarme solo una vez pero no se por que se repite como 20 veces. Espero me puedas ayudar solo me falta corregir este inconveniente para terminar el programa.
Esto es el programa:
store 0 to pag,sum_debe,sum_haber,total,cod_doc
STORE .F. TO no_print
cDoc = "h:\ruta\document"
Use (cDoc) SHARED AGAIN
Index On doc_tip TO (cDoc) FOR doc_cla="T"
SELECT * FROM ("h:\ruta\tmpdiario");
INTO CURSOR mv2 ORDER BY tmpdiario.n_asiento
SET RELATION TO ltivo INTO document ADDITIVE
=imprime()
CLOSE TABLES
FUNCTION imprime
STORE 0 TO l, pag, mivs_saldos, mivd_saldos
reporte=SYS(3)+".prn"
SET DEVICE TO FILE &reporte
=titula()
SCAN
IF l > 60
l=l+1
@ l,01 say replicate('-',230)
@ l,176 say "VAN ......."+SPACE(14)+TRANSFORM(sum_debe,'#,###,###.##')+SPACE(6)+TRANSFORM(sum_haber,'#,###,###.##')
=titula1()
ENDIF
l=l+1
IF no_print
LOOP
ENDIF
IF ltivo#cod_doc
=doc()
ENDIF
@ l,06 SAY mv2.n_asiento
@ l,pcol()+7 SAY mv2.fec_ope
@ l,pcol()+3 SAY PADR(mv2.nom_glosa,72)
@ l,pcol()+9 SAY PADR(mv2.cod_libro,2)
@ l,pcol()+23 SAY PADR(mv2.doc_sust,15)
@ l,pcol() say PADR(mv2.cod_cta,10)
@ l,pcol()+1 say PADR(mv2.denom,40)
@ l,pcol()+3 SAY TRANSFORM(mv2.debe,"@KZ 9999,999.99")
@ l,pcol()+8 SAY TRANSFORM(mv2.haber,"@KZ 999,999.99")
sum_debe=sum_debe+debe
sum_haber=sum_haber+haber
ENDSCAN
=t_final()
SET DEVICE TO SCREEN
=view_list(lista)
FUNCTION titula
STORE 0 to l
pag=pag+1
IF BETWEEN(pag,val1,val2)
no_print=.F.
ELSE
STORE 6 TO l
no_print=.T.
RETURN
ENDIF
l=l+3
@ l,100 SAY "LIBRO DIARIO"
l=l+2
@ l,01 SAY "PERIODO :"+cMes+" - "+cAño
l=l+1
@ l,01 SAY "RUC : "
l=l+1
........
......
=l+1
FUNCTION titula1
STORE 0 to l
pag=pag+1
IF BETWEEN(pag,val1,val2)
no_print=.F.
ELSE
STORE 6 TO l
no_print=.T.
RETURN
ENDIF
l=l+3
@ l,100 SAY "LIBRO DIARIO"
l=l+2
@ l,01 SAY "PERIODO"
l=l+1
@ l,01 SAY "RUC : 20223938478"
....
....
l=l+2
@ l,176 SAY "VIENEN ......."+SPACE(11)+TRANSFORM(sum_debe,'#,###,###.##')+SPACE(6)+TRANSFORM(sum_haber,'#,###,###.##')
l=l+1
FUNCTION t_final
saldo_ant_debe=nGSLdAntDebe-sum_debe
saldo_ant_haber=nGSLdAntHaber-sum_haber
l=l+1
IF no_print
RETURN
ENDIF
@ l,01 say replicate ('=',231)
IF cNmes="01"
@ l,176 say 'SALDO TOTAL DIARIO'+SPACE(5)+transform(nGSLdAntDebe,'###,###,###.##')+SPACE(4)+transform(nGSLdAntHaber,'###,###,###.##')+chr(13)+chr(10)
ELSE
@ l,176 say +'SALDO TOTAL DIARIO'+SPACE(5)+transform(sum_debe,'###,###,###.##')+SPACE(4)+transform(sum_haber,'###,###,###.##')+chr(13)+chr(10)
ENDIF
l=l+1
IF cNmes="01"
@ l,176 say ' SALDO ANTERIOR'+space(5)+transform(nGSLdAntDebe-nGSLdAntDebe,'###,###,###.##')+SPACE(4)+transform(nGSLdAntHaber-nGSLdAntHaber,'###,###,###.##')+chr(13)+chr(10)
else
@ l,176 say ' SALDO ANTERIOR'+space(5)+transform(saldo_ant_debe,'###,###,###.##')+SPACE(4)+transform(saldo_ant_haber,'###,###,###.##')+chr(13)+chr(10)
ENDIF
l=l+1
@ l,176 say ' TOTAL GENERAL'+space(5)+transform(nGSLdAntDebe,'###,###,###.##')+SPACE(4)+transform(nGSLdAntHaber,'###,###,###.##')+chr(13)+chr(10)
l=l+1
@ l,01 say replicate ('=',231)
ENDFUNC
**************
FUNCTION doc
**************
cod_doc=ltivo
l=l+1
@ l,60 SAY ALLTRIM(document.doc_des)
l=l+2
1 Respuesta
Respuesta de Hector Cevallos
1