La Web del Programador: Comunidad de Programadores
 
    Pregunta:  317 - REPORTES EN FOXPROW 2.6
Autor:  Maria
Estoy realizando un sistema en FOXPROW 2.6 pero en el modulo de generar reportes (no con el generador que posee el FOX) sino escribiendo mi propio programa envio o ejecuto la opcion y se queda en el buffer de la impresora y jamas se imprime.
Debo indicar que con las instrucciones que utilizo estos mismos reportes si se generan en una version anterior para DOS.
Pero el problema esta que se instalo FOXPROW 2.6 y debo sacar este sistema lo mas pronto posible Desde Guayaquil-Ecuador Gracias anticipadas por sus comentarios

  Respuesta:  Luis Carlo Elias
La estructura dede ser similar a esto:

SET TALK off
SET ECHO off
SET DEVICE TO print
??? CHR(27)+CHR(18)
&& 2
linea=5 && 5
@ linea,103 say TXTFECHAFAC
@ linea,120 say txtfolfac

linea=7 && 7
@ linea,4 say txtnombre
@ linea,123 say txtcliente
linea=linea+1 && 8
@ linea,4 say txtdir
linea=linea+1 && 9
@ linea,4 say txtcol
@ linea,123 say txtfolio
linea=linea+1 && 10
@ linea,4 say txtdeleg
linea=linea+1 && 11
@ linea,4 say txtedo
@ linea,123 say SUBSTR(txtncondp,1,10)
linea=linea+1 && 12
@ linea,4 say txtcp
linea=linea+1 && 13
@ linea,4 say txtrfc
linea=linea+1 && 14
@ linea,4 say 'Tel. '+txttel1+txttel2
@ linea,123 say txtruta
linea=17
SELECT arcdet
SET ORDER TO codigo_art
GO top
DO WHILE NOT EOF()
@ linea,4 say SUBSTR(codigo_art,1,10)
@ linea,15 say SUBSTR(nombre,1,20)+' '+SUBSTR(presenta,1,20)
*@ linea,40 say SUBSTR(presenta,1,20)
@ linea,69 say cantidad_s picture "9,999"
@ linea,77 say scargo picture "999"
@ linea,83 say coferta picture "999"
@ linea,89 say cantsuma picture "9,999"
@ linea,99 say precio_uni picture "9,999.99"
@ linea,112 say porc_desc1 picture "99.99"
@ linea,121 say ROUND(VALIMP1+VALIMP2+VALIMP3+VALIMP4+VALIMP5+VALIMP6+VALIMP7+VALIMP8+VALIMP9+VALIMP10,2) picture "99.99"
@ linea,128 say importe_ne picture "99,999.99"
linea=linea+1
SKIP
ENDDO
linea=46
@ linea,3 say letrero
@ linea,123 say txtsubt picture "9,999,999.99"
linea=linea+1 && 47
@ linea,123 say txtiva picture "9,999,999.99"
linea=linea+1 && 48
@ linea,3 say "NO SE ACEPTAN DEVOLUCIONES DESPUES DE 8 (OCHO) DIAS"
*LINEA=LINEA+1
@ LINEA,123 SAY TXTTOTAL PICTURE "9,999,999.99"
linea=linea+18
@ linea,0 say '.'

*EJECT
*??? CHR(12)
LINEA=5
*@ linea,0 say '.'
*SET PRINTER OFF
SET PRINTER TO && esta instruccion Forza a que se libere el buffer de la impresora ponla al final de tu rutina de impresion
SET DEVICE TO SCREEN
flush

  Respuesta:  Henry Martinez
Cuando pasas de DOS a WIndows es el mayor de los problemas es la impresion, yo tambien soy de Guayaquil Ecuador me puedes llamar al 098086355 y te puedo ayudar.

Cuando imprimes en modo windows es preferible formar la linea de impresion y luego mandarla a la impresora por ejemplo:

tstr=cli.codigo+' '+padr(allt(cli.apellidos)+' '+allt(cli.nombres),40)+transf(cli.cupo,'999,999,999.99')

@tlinea,0 SAY tstr font 'Courier New',10

de esta manera tambien no se te descuadra la impresion y ademas el programa te puede seguir funcionando tando en modo DOS como en modo WIndows sin ningún problema, te lo aseguro.

Yo tengo un sistema que funciona tanto en DOS como en Windos y en ambos casos el reporte es el mismo lo unico que cambia son las pantallas.

Bye, llamame.

  Respuesta:  Dante Romero
Hola, al principio enviaba directamente mis reportes a la impresora, pero ahora siempre los genero a un archivo texto y los envio con un simple TYPE <nombre archivo> TO PRINTER.
Suerte
Saludos desde Peru

  Respuesta:  Manuel Medina
Hola amigo:

Debe tener claro que cuando hace un programa para reporte y lo ejecuta, todos los registros son enviados al mismo tiempo y suele dar problemas dependiendo de la capacidad que tenga la impresora para solportar. Una vez lo intente y regrese a mis reportes generado ya que les dan a la impresora poco a poco.

  Respuesta:  Anastasio Almada
Para solucionar el problema de impresión generado con programas .PRG, es lo siguiente.
al terminar el ciclo de instrucciones para impresion debes escribir la sentencia SET PRINTER TO LPT1
EJEMPLO

Procedure Imprime
SET DEVICE TO PRINT
do while !eof()
@fila,columna say campo
@fila,columna say campo
sekip
enddo
SET PRINTER TO LPT1
RETURN

Espero que te sirva, cualquier cosa esribeme
Un saludo desde Asinción Paraguay

  Respuesta:  Anastasio Almada
Para solucionar el problema de impresión generado con programas .PRG, es lo siguiente.
al terminar el ciclo de instrucciones para impresion debes escribir la sentencia SET PRINTER TO LPT1
EJEMPLO

Procedure Imprime
SET DEVICE TO PRINT
do while !eof()
@fila,columna say campo
@fila,columna say campo
skip
enddo
SET PRINTER TO LPT1
RETURN

Espero que te sirva, cualquier cosa esribeme
Un saludo desde Asinción Paraguay

  Respuesta:  Ali Flores V.
Para liberar el reporte de la memoria use el comamdo: SET PRINTER TO después de que terminas enviar el reporte.