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 de ingesoft
0
0
ingesoft, Ing. en Sistemas ,Manejo de base de datos Diseño y elaboración de...
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