Impresión personalizada

Hola buen día, necesito generar un reporte personalizado del Libro Diario que me pidieron, en papel contnuo, tengo un formulario con dos combos para elegir el mes y año respectivamente, a parte tengo dos spiners que supuestamente son para elegir los números de página a imprimir y un botón aceptar que al pulsarlo me muestra una vista preliminar del reporte dependiendo de la página inicial y final que elija en los spiners para luego imprimirlo, he logrado imprimir el reporte de una sola vez que son más o menos 30 hojas continuas pero el problema es que si hay un corte de fluido eléctrico tuviera que volver a imprimir desde donde se quedó el reporte y no todo el reporte nuevamente, para eso necesito generar un reporte personalizado, que respete la página inicial y la página fnal elegido en los spiners.
El formulario y el PRG lo he generado en Visual Fox 8, ¿no se si te puedo enviar el PRG a tu correo?.

1 Respuesta

Respuesta
Mandame el form y tus tablas por favor [email protected]
Al pulsar el botón aceptar me carga este PRG, en este PRG quiero buscar la forma para realizar la impresión personalizada de acuerdo a la página inicial y final que elijo en los spiners del form.
SET DELETED ON
store 0 to pag,sum_debe,sum_haber,total,cod_doc
STORE .f. TO no_print
cDoc = "h:\ruta\document"
Use (cDoc) SHARED AGAIN        &&EXCLUSIVE
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
=with_Lpt1()
CLOSE TABLES
FUNCTION With_Lpt1
                STORE 0 TO l, pag
              lista=SYS(3)+".prn"
                SET DEVICE TO FILE &lista
                =titula1()
                SCAN
                               IF l > 58
                                               l=l+1
                                               @ l,01 say replicate('-',253)
                                               l=l+1
                                               @ l,200 say "VAN ......."+SPACE(14)+TRANSFORM(sum_debe+saldodEne,'###,###,###.##')+SPACE(1)+TRANSFORM(sum_haber+saldohEne,'###,###,###.##')
                                               =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()+24 SAY PADR(mv2.cod_libro,2)
                    @ l,pcol()+26 SAY PADR(mv2.doc_sust,12)
                    @ l,pcol()                        say PADR(mv2.cod_cta,10)
                    @ l,pcol()+1   say PADR(mv2.denom,40)
                    @ l,pcol()+14 SAY TRANSFORM(mv2.debe,"@KZ 9999,999.99")
                    @ l,pcol()+5   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+4
                               @ l,108 SAY+CHR(18)+Chr(14)+"TITULO DEL REPORTE"+Chr(15)+Chr(27)                 "+TRANSFORM(fhasta,"@KE")
                               l=l+2
                               @ l,01  SAY "PERIODO :"+cMes+" - "+cAño
                               l=l+1
                               @ l,01  SAY "RUC     : "
                               l=l+1
                               @ l,01  SAY "APELLIDOS, NOMBRES, DENOMINACION O RAZON SOCIAL : "
                    l=l+2
                    .....
                  .....
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+4
                               @ l,108 SAY +CHR(18)+Chr(14)+"LIBRO DIARIO"+Chr(15)+Chr(27)          &&UPPER(RTRIM(almacen.descri))+" INVENTARIO VALORIZADO AL "+TRANSFORM(fhasta,"@KE")
                               l=l+2
                               @ l,01  SAY "PERIODO "+cMes+" - "+cAño
                               l=l+1
                               @ l,01  SAY "RUC : "
                               l=l+1
                               @ l,01  SAY "APELLIDOS, NOMBRES, DENOMINACION O RAZON SOCIAL :"
                    l=l+2
                  @ l,200 SAY "VIENEN ......."+SPACE(11)+TRANSFORM(sum_debe+saldodFeb,'###,###,###.##')+SPACE(1)+TRANSFORM(sum_haber+saldohFeb,'###,###,###.##')
l=l+1
FUNCTION t_final
l=l+1
IF no_print
                RETURN
ENDIF
@ l,01 say replicate ('=',253)      
l=l+1
@ l,205 say 'TOTAL GENERAL'+space(7)+transform(sum_debe+saldodEne,'###,###,###.##')+SPACE(1)+transform(sum_haber+saldohEne,'###,###,###.##')
@ l,01 say replicate ('=',253) 
**************
FUNCTION doc
**************
cod_doc=ltivo
l=l+1
@ l,60 SAY ALLTRIM(document.doc_des)
l=l+2
****** IF BETWEEN(pag,val1,val2) con esta linea supuestamente me debe respetar las paginas a mostrar pero no me respeta me muestra otra pagina. En el init del form val1=1 y val2=99, val1 esta asociado a controlsource del spiner1 y val2 esta asociado a controlsource del spiner2. Espero me puedas apoyar.
Hola, ya te envié el form y las tablas.
Ok lo estoy revisando un poquito de paciencia
Ok, no hay problema.
Disculpa me eolvidé poner que mes a consultar, en todo caso el mes a consultar seria febrero de 2009. Gracias.
Hola, disculpa la molestia no se si recibiste los mensajes el mes a consultar es febrero de 2009. ¿En todo caso no se si tendrás tiempo de revisarlo?. Gracias.
IF no_print
   =t_final()
   SET DEVICE  TO SCREEN
   =view_list(lista)
   **LOOP
aqui escribir codigo para finalizar informe resumen
else
aqui escbir el codigo para segrir imprimiendo
  Endif
Mira aquí en tu prg diario debería acabar yo provee cambiando el final y la impresión aquí solo para ver si era allí donde debería terminar todo y es así solo que como hay código debajo me da error corrigue en esta parte tu programa y verifica que debes cambiar en tu función para finalice allí una vez que el numero de página final sea el que cargaste y te devuelve el valo de no_print como .t. tienes que aunetar tal vez un else para que no siga corriendo
espero haber sido útil aunque un poco retrasado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas