Impresiones en vp

Necesito imprimir una factura, lo hice al formulario con @prow() y no envía nada, queda (y a veces) en la cola de la impresora. ¿Qué puedo hacer?

1 Respuesta

Respuesta
1
Espero poder ayudarte..
¿Yo no utilizo el @prow() sino que directamente envío los comandos y los datos por medio de?
Por ejemplo comienzo de la linea 1 y empiezo con
CtrlF=chr(13)+chr(10)
ctrlFF=chr(13)+chr(12)
??? padc('Titulo',80) + ctrlF
??? 'Hola'... +ctrlF
??? ctrlFF
y asi..
algunos codigos que te pueden ser util son:
_chico=esc+chr(33)+chr(1)
_normal=esc+chr(33)+chr(0)
_grande=esc+chr(33)+chr(16)+esc+chr(33)+chr(32)
Pero para que funcionen, dependen de la impresora, cualquier cosa si tu impresora no es epson, la podes poner como emulación epson, en el setup de la impresora (en la impresora, no en Windows)
En tu caso creo que lo único que te falta es enviarle el código de fin de archivo.. fíjate más arriba.. ctrlFF
O sino, en el manual de tu impresora.
No esta de más decir, que es conveniente que la impresora sea declarada en windows como generica/solo texto..
Bueno, espero que mi respuesta haya sido útil y espero tu calificación..
Keystone - Christian
Te quería recordar, que si fue de utilidad la respuesta.
Muchas gracias Cristian, me solucionó algunas cosas. ¿Pero de esta forma como puedo alinear los campos numéricos porque me quedan todos desordenados?. Muchas gracias. Ines-
Para los datos numéricos podes usar la función transf()
Así por ejemplo:
transf(12345,'##,###,###.##')
Para saber que código de formato pones mira la información de la función.
Lo único que esta "prohibido" usar, es algo como alltrim() porque lo que necesitamos es justamente que no se borren los espacio..
Para tu caso, yo haría lo siguiente:
Generaría una función que haga una linea, por ejemplo linea().. puede ser una función al final de un prg (function linea), un prg que se llama linea o un método de un formulario..
Entonces declararía las variables y luego las mandaría a imprimir.. por ejemplo:
mCantidad=1
mPrecio=10
mDescrip='Descripcion del articulo'
function linea
??? transf(mCantidad,'####.##')+' '
??? padr(mDescrip,40)+' '
??? transf(mPrecio,'######.##')+' '
??? transf(mCantidad*mPrecio,'######.##')
??? chr(13)+chr(10)
En la respuesta anterior me falto algo..
Quedaría así:
mCantidad=1
mPrecio=10
mDescrip='Descripcion del articulo'
=linea()
function linea
??? transf(mCantidad,'####.##')+' '
??? padr(mDescrip,40)+' '
??? transf(mPrecio,'######.##')+' '
??? transf(mCantidad*mPrecio,'######.##')
??? chr(13)+chr(10)
El código de arriba, lo podes poner en un scan de los artículos, o un cursor por ejemplo.. ademas, le podes poner un contador de lineas, etc..
Hay otras soluciones mejores. Más técnicas para imprimir en D.O.ES que me gustaría informarte..
Estos método, ¿tanto @prow() como? Resultan prácticos, pero un poco inseguros al momento de usar un sistema multiusuario que imprima en una sola impresora porque se pueden mezclar los datos que le llegan a esta.
Otra manera de hacerlo y que tu sistema sea flexible, es mediante un archivo de texto en donde el usuario coloca las variables donde las necesita y luego tu sistema las remplaza por los datos y manda a imprimir el archivo de texto completo..
Para esto yo no utilizo funciones tipo fOpen() etc sino que uso un memo y el comando append memo from y me despreocupo de los posibles problemas multiusuarios..
Después, con una simple función strTran() te sacas todos los problemas de cálculos de encima..
Si quieres información sobre esto, por favor, finaliza esta pregunta y hace una pregunta nueva con respecto a esto.. si te parece..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas