Problem printing
- From: "Robert Altamirano" <RobertAltamirano@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 8 Feb 2006 10:05:28 -0800
I am trying to print a sales ticket through a text file and then send it to a
usb printer, I am having problems changing the font size and also when I
start printing it throws a page with just a one and a smile face after that
the sales ticket comes out. How can I solve this problem. Thaks
This is the code sample I am using:
'---------------------------------------------------------------------------------------
' Module : clsImpresion
' DateTime : 27/01/2006 11:29
' Author : rsaltami
' Purpose : imprimo mas de 200 cheques de una tirada, solamente tienes que
mandarle los
' : datos a este modulo, primero AbrirImpresoraCheque, despues
ImprimirCheque y
' : por ultimo CerrarImpresoraCheque, la unica libreria que
utilizo es gdi32
' : para conocer los margenes de la impresora.
'
' : Por supuesto debes tener conectada la impresosa al puerto lpt2
de esta forma
' : desde un comando en ms-dos NET USE LPT2: \\EQUIPO\Impresora
'
' : Por favor dime si te funciona, ok?
'
' : un saludo Angel Zapata
'---------------------------------------------------------------------------------------
Option Explicit
Private NumeroImpresora As Integer
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long,
ByValnIndex As Long) As Long
'---------------------------------------------------------------------------------------
' Procedure : AbrirImpresoraCheque
' DateTime : 08/02/2006 10:02
' Author : rsaltami
' Purpose : Abre la impresora
' Parameter :
' Return :
' Notes :
'---------------------------------------------------------------------------------------
'
Public Sub AbrirImpresoraFactura()
NumeroImpresora = FreeFile
' Open "LPT1" For Output As #NumeroImpresora
Open "C:\FACTURAVENTA.TXT" For Output As #NumeroImpresora
End Sub
'---------------------------------------------------------------------------------------
' Procedure : CerrarImpresoraFactura
' DateTime : 08/02/2006 10:01
' Author : rsaltami
' Purpose : Cierra la conexion con la impresora
'---------------------------------------------------------------------------------------
'
Public Sub CerrarImpresoraFactura()
Close #NumeroImpresora
' Shell "NET USE LPT1: /DELETE"
End Sub
'---------------------------------------------------------------------------------------
' Procedure : ImprimeCheque
' DateTime : 08/02/2006 10:00
' Author : rsaltami
' Purpose : Rutina que imprime una factura en formato texto a travez del
puerto de las impresoras
' Parameter : Recibe strNufactura con el numero de factura a imprimir
'---------------------------------------------------------------------------------------
'
Public Sub ImprimeFactura(ByVal strNufactura As String)
Dim ContadorLinea As Byte
Dim MargenIzquierdo As Long
Dim MargenSuperior As Long
MargenIzquierdo = (GetDeviceCaps(Printer.hdc, 112)) ' /
GetDeviceCaps(Printer.hdc, 88)) ' * 25.4
MargenSuperior = (GetDeviceCaps(Printer.hdc, 113)) '/
GetDeviceCaps(Printer.hdc, 90)) * 25.4
' Encendido de la impresora
Print #NumeroImpresora, Chr(27) & Chr(85) & Chr(49);
' Inicializacion de la impresora
Print #NumeroImpresora, Chr(27) & Chr(64);
' Establecer longitud de página a 18 lineas
'' Print #NumeroImpresora, Chr(27) & Chr(67) & Chr(18);
Print #NumeroImpresora, Chr(27) & Chr(67) & Chr(4); 'se modifico para
que la impresion inicie en la primera linea
' Establecer velocidad alta / baja (1/0)
Print #NumeroImpresora, Chr(27) & Chr(115) & Chr(1);
' Establecer impresion unidireccional (1/0)
Print #NumeroImpresora, Chr(27) & Chr(85) & Chr(1);
' Establecer margen derecho
Print #NumeroImpresora, Chr(27) & Chr(81) & Chr(132);
' Cancela los márgenes de impresion para papel continuo
Print #NumeroImpresora, Chr(27) & Chr(79);
' Selección de fuente a OCR-B para ESC/P2
'Print #NumeroImpresora, Chr(27) & Chr(107) & Chr(5);
' Selección de fuente a Sans Serif para FX
Print #NumeroImpresora, Chr(27) & Chr(107) & Chr(1);
' Selección de fuente a Proporcional
Print #NumeroImpresora, Chr(27) & Chr(112) & Chr(1);
' Establecer calidad de fuente a Carta para ESC/P2
Print #NumeroImpresora, Chr(27) & Chr(12) & Chr(49);
' Establecer valores de fuente
' 0 - 10 cpi
' 1 - 12 cpi
' 2 - Proporcional
' 4 - 15 cpi
' 8 - Negrita
' 16 - Doble impacto
' 32 - Doble ancho
' 64 - Cursiva
' 128 - Subrayada
Print #NumeroImpresora, Chr(27) & Chr(33) & Chr(1);
''' For ContadorLinea = 1 To 3
''' Print #NumeroImpresora, Chr(10) & Chr(13);
''' Next
Dim adoRecordset As New ADODB.Recordset
Dim adoRecordset2 As New ADODB.Recordset
Dim adoRecordset3 As New ADODB.Recordset
Dim strSQL As String
Dim strSQL2 As String
Dim strSQL3 As String
Dim intContador As Integer
strSQL = "SELECT * FROM FACTURA WHERE NUFACTURA='" & strNufactura & "'"
Set adoRecordset = modPrincipal.abreRecordset(strSQL)
If Not adoRecordset.EOF Then
intContador = intContador + 1
Print #NumeroImpresora, Tab(15); ""
intContador = intContador + 1
Print #NumeroImpresora, Tab(16);
adoRecordset.Fields("CLIENTE").Value + " " +
modPrincipal.rellenaDerecha(adoRecordset.Fields("NOMBRE").Value, 60) +
Str(adoRecordset.Fields("FECHA").Value)
strSQL3 = "SELECT DIRECCION,TELEFONO FROM CLIENTES WHERE NUMERO='" &
adoRecordset.Fields("CLIENTE").Value & "'"
Set adoRecordset3 = modPrincipal.abreRecordset(strSQL3)
If adoRecordset3.EOF = False Then
intContador = intContador + 1
Print #NumeroImpresora, Tab(20);
modPrincipal.rellenaDerecha(IIf(IsNull(adoRecordset3.Fields("DIRECCION").Value)
= True, "", adoRecordset3.Fields("DIRECCION").Value), 50) &
IIf(IsNull(adoRecordset3.Fields("TELEFONO").Value) = True, "",
adoRecordset3.Fields("TELEFONO").Value)
End If
Call modPrincipal.cierraRecordset(adoRecordset3)
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
intContador = intContador + 1
Print #NumeroImpresora, Tab(15);
modPrincipal.rellenaDerecha(adoRecordset.Fields("NUFACTURA").Value, 25) +
modPrincipal.rellenaDerecha(adoRecordset.Fields("NUFACTURA").Value, 25) +
modPrincipal.rellenaDerecha(adoRecordset.Fields("CLIENTE").Value, 25) +
modPrincipal.rellenaDerecha(adoRecordset.Fields("VENDEDOR").Value, 30)
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
strSQL2 = "SELECT * FROM INVENTA2 WHERE NUMERO='" & strNufactura & "'"
Set adoRecordset2 = modPrincipal.abreRecordset(strSQL2)
While Not adoRecordset2.EOF
intContador = intContador + 1
Print #NumeroImpresora, Tab(5);
modPrincipal.rellenaDerecha(adoRecordset2.Fields("ARTICULO").Value, 14) &
modPrincipal.rellenaDerecha(Format(adoRecordset2.Fields("SALIDA").Value,
"0.0"), 6) &
modPrincipal.rellenaDerecha(Left(adoRecordset2.Fields("DESCRIP").Value, 15),
40) &
modPrincipal.rellena(modPrincipal.formateaCampoNumero(adoRecordset2.Fields("PREVENTA").Value,
True, 10, 2), 15, " ") &
modPrincipal.rellena(modPrincipal.formateaCampoNumero(adoRecordset2.Fields("VENTA").Value, True, 10, 2), 15, " ")
adoRecordset2.MoveNext
Wend
Call modPrincipal.cierraRecordset(adoRecordset2)
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
intContador = intContador + 1
Dim intLinea As Integer
For intLinea = intContador To 19
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
Next intLinea
'EXENTO
'GRAVADO
Print #NumeroImpresora, Tab(1); Space(75) &
modPrincipal.rellena(Format(adoRecordset.Fields("IMPUESTOS") * 100 / 13,
"###,###,##0.00"), 10, " ") &
modPrincipal.rellena(Format(adoRecordset.Fields("MONTO") -
(adoRecordset.Fields("IMPUESTOS") * 100 / 13), "###,###,##0.00"), 10, " ")
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
intContador = intContador + 1
Print #NumeroImpresora, Tab(1); Space(80) &
modPrincipal.rellena(Format(adoRecordset.Fields("MONTO"), "###,###,##0.00"),
15, " ")
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
intContador = intContador + 1
Print #NumeroImpresora, Chr(10);
End If
Call modPrincipal.cierraRecordset(adoRecordset)
End Sub
.
- Follow-Ups:
- Re: Problem printing
- From: Mike Williams
- Re: Problem printing
- Prev by Date: Re: Even vs Odd integer values?
- Next by Date: Re: Register OCX on execute/run
- Previous by thread: Re: Create a script to move files older than 30 days
- Next by thread: Re: Problem printing
- Index(es):