Impresión

Buenas tardes, con la colaboración de Uds. He logrado realizar el siguiente código para imprimir los registros, me falta codificar la cabecera no se exactamente donde lo podría incluir este es el código dentro dun prg:
Set Date Briti
Set Cent On
Set Dele On
Set Talk on
Set Echo off
Clear
close all
select reg_compras.idcomp,reg_compras.fecha_emision,reg_compras.fecha_venci,;
reg_compras.nro,reg_compras.serie,reg_compras.nro_comprob,reg_compras.cod,;
reg_compras.bimponible1,reg_compras.igv,reg_compras.adqui_no_grav,reg_compras.isc,;
reg_compras.otros,reg_compras.imp_total,reg_compras.nro_const_dep,;
reg_compras.fec_const_dep,reg_compras.tip_cambio,;
reg_compras.ruc,comprobantes.descripcion,proveedor.rsocial,tipodoc.descripcion1; FROM reg_compras INNER JOIN comprobantes ON reg_compras.nro=comprobantes.nro;
inner JOIN proveedor ON reg_compras.ruc=proveedor.ruc;
inner JOIN tipodoc ON reg_compras.cod=tipodoc.cod ORDER BY reg_compras.idcomp;
into cursor imprime
set printer to name solotexto
SET DEVICE TO PRINTER
CtrlF=chr(13)+chr(10)
ctrlFF=chr(13)+chr(12)
mLinea=8
Se le imprime
scan all
=imprimeLinea()
if mLinea=?? Aca me faltaria colocar la cantidad de lineas que tiene un A3.
? CtrlFF
Endif
Endscan
set printer to defa
procedure imprimeLinea
@mlinea,8 say padr(imprime.idcomp,10)+' '+str(imprime.bimponible1,10,2)&&+ctrlF
mLinea=mLinea+1
return
¿Es necesario crear una impresora genérica?, ya que las impreiones lo realizaré en una epson fx2190 a parte esta impresora es la predeterminada por que están imprimiendo datos de otro sistema, ¿tengo qué estar cambiando a predeterminada la impresora genérica?

1 Respuesta

Respuesta
1
Espero poder ayudarte..
Empecemos por el final..
Si. Te cuento..
Cuando imprimís de esta manera no mandas códigos de formato a la impresora sino que mandas texto plano.. sino, por más que la impresora imprima solo texto con los drivers de fx2190, lo va a hacer en modo gráfico y por eso va a tardar, porque imprimís bajo windows..
Pero no te preocupes por el tema de la impresora genérica..
La creas como impresora genérica en el puerto lpt1..
Después usas
Set printer to name soloTexto (y la selecciona)
set printer to default (y vuelve a la impresora por defecto sin cambios) para los otros usuarios..
Yo no usaria @ y set device to printer..
y te cuento porque..
set device to printer redirecciona la salida (que casi siempre es por pantalla) a la impresora..
Si tu programa falla o sale y no se vuelve a redireccionar quedaria mal..
Cuando usas ??? la salida siempre es por impresora.
si me permitis te paso el codigo tal cual lo haria yo:
set printer to name solotexto
CtrlF=chr(13)+chr(10)
ctrlFF=chr(13)+chr(12)
mLinea=1
sele imprime
scan all
if mLinea=1
=imprimeCabecera()
endif
=imprimeLinea()
if mLinea=?? aca me faltaria colocar la cantidad de lineas que tiene un A3.
??? ctrlFF
mLinea=1
endif
endscan
set printer to defa
procedure imprimeLinea
??? space(7)+padr(imprime.idcomp,10)+' '+str(imprime.bimponible1,10,2)+ctrlF
mLinea=mLinea+1
return
procedure imprimeCabecera
??? space(7)+replicate('-',21)+ctrlF
??? space(7)+padr('Titulo1',10)+' '+padr(Titulo2',10)+ctrlF
??? space(7)+replicate('-',21)+ctrlF
mLinea=mLinea+3
return
Volviendo al tema de la impresora, te cuento que la impresora predeterminada de windows nunca cambia (por ejemplo para Word) sino que tu sistema seleccionará la soloTexto y después volverá a la impresora predeterminada de windows.
Si quieres usar de todas maneras la fx2190 sacale el set printer to name soloTexto..
Pero en todo caso, si es así, mejor usa un report y le definís la hoja que quieras (continuo inclusive) porque se supone que este método de impresión es para que no se pierda la velocidad de las impresoras matriciales en windows.
Como ultimo detalle: el set device to defa es importante para que se cierre el trabajo de impresión.. sino queda "en cola"
Espero que mi respuesta haya sido de utilidad y si es así te pido que califiques y cierres la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas