Reportes en papel continuo

Buenos días, espero me puedan ayudar. Necesito generar reportes en papel continuo, estoy generando un cursor y la pregunta seria como harcer para imprimir todos los registros de este cursor en un papel continuo tomando en cuenta que tiene que haber saltos de página, Así genero el cursor:
select reclamos.fecha_ing,fecha_aten,reclamos.hora_ing,reclamos.inscrinro,reclamos.estado_recl,reclamos.procede,;
inscripc.clinombre,rzcalle.caltip,rzcalle.caldes,conexion.prenro,areas.area,;
tiporeclamo.reclamo,personal.nombre,documentos.documento from reclamos inner join inscripc ON reclamos.inscrinro=inscripc.inscrinro;
inner join conexion on inscripc.inscrinro=conexion.inscrinro;
inner join rzcalle on conexion.precalle=rzcalle.calcod;
inner join areas on reclamos.idarea=areas.idarea;
inner join tiporeclamo on reclamos.idreclamo=tiporeclamo.idreclamo;
inner join personal ON reclamos.idpersonal=personal.idpersonal;
inner join documentos ON reclamos.iddoc=documentos.iddoc INTO cursor busca
set printer on
...
...

1 Respuesta

Respuesta
1
Espero poder ayudarte.
Para tu necesidad tienes dos opciones..
Una es generar el report en windows (si estas programando en windows) y elegir en la configuración de la hoja el papel continuo y te despreocupas de los saltos y todo eso, pero la impresión se hace en modo gráfico con lo cual en una impresora matricial es lento..
Otra, es hacer un programita que mande a imprimir en modo "solo texto". Para este segundo método, lo importante es definir la impresora en windows como "genérica - solo texto" y ponerle un nombre fácil de acceder, como "SoloTexto" por ejemplo..
La impresora, si es epson por ejemplo, tiene que estar bien configurada con el tamaño de papel. Muchas impresoras, al tener presiona una tecla, y encenderla entra en modo configuración.. y ahí podes ver que esté todo correcto..
Para elegir esa impresora hace así:
set printer to name SoloTexto
despues, para empezar a imprimir, usas:
??? tabla.campo1+' '+tabla.campo2+...
Para que los datos tipo carácter tenga tamaño fijo usa la función padre, padc o padl dependiendo si quieres la alineación izquierda, derecha o centrada..
POr ejemplo, padre(tabla. Campo, 40) escribe el contenido del campo y rellena o recorta para que tenga justo 40 caracteres..
Es importante enviar a la impresora el avance de carro que en muchos casos es chr(13)+chr(10)
Podes definir al comienzo del programa lo siguiente:
CtrlF=chr(13)+chr(10)
ctrlFF=chr(13)+chr(12)
Entonces en cada linea al final le envías el salto de linea..
? CtrlF
El otro (ctrlFF) es el salto de página..
Si en el setup de la impresora pusiste bien la longitud de la hoja y el salto automático, también podes despreocuparte de enviarlo, salvo al final del listado ya que queda bien, que salga el papel para que el usuario pueda cortarlo..
Empolijando un poco la respuesta yo haría así..
set printer to name SoloTexto
CtrlF=chr(13)+chr(10)
ctrlFF=chr(13)+chr(12)
mLinea=0
sele miTabla
scan all
=imprimeLinea()
if mLinea=40 &&Por ejemplo
??? ctrlFF
mLinea=0
endif
endscan
if mLinea#0
??? ctrlFF
endif
set printer to defa
procedure imprimeLinea
??? padr(miTabla.campo1,40)+' '+str(miTabla.campoNumerico,8,2)+ctrlF
mLinea=mLinea+1
return
Algunos codigos que tambien te pueden servir para enviar a la impresora son:
_chico=esc+chr(33)+chr(1)
_normal=esc+chr(33)+chr(0)
_grande=esc+chr(33)+chr(16)+esc+chr(33)+chr(32)
Espero que haya sido de utilidad la respuesta y si es así, espero tu calificación y que cierres la consulta.
Cualquier inquietud estoy a tu disposición..
Keystone - Christian

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas